为保证M型红苹果而从树上采集的苹果的最低数量
- 最后更新 : 2021年8月6日
在四个方向(东、西、北、南)有不同种类的苹果树,它们可能同时长出红苹果和绿苹果,这样每棵树正好长出K个苹果,其方式如下。
- N- 北边的树的数量没有红苹果。
- S--南边的树没有绿苹果的数量。
- W--西边的树有一些红苹果的数量。
- E--东边的树有一些绿苹果。
然而,苹果的颜色在屋外是无法区分的。因此,任务是找出从树上收集的苹果的最少数量,以保证M个红苹果。如果不可能,则打印-1。
例子。
输入。 M = 10, K = 15, N = 0, S = 1, W = 0, E = 0
输出。 10
解释。 它只是从南方的第一棵树上得到10个苹果。**输入。**M = 10, K = 15, N = 3, S = 0, W = 1, E = 0
输出。-1
**解释。**南方、北方和东方都没有红苹果。但是在西部至少有1个红苹果,而且总共有1棵树,因此,保证的红苹果总数为1*1=1,小于M。
办法。 南方的每个苹果都确保是红的。因此,首先从南边取一个苹果。在东部和西部,每棵树上至少有一个红苹果。这就是为什么,为了保证它被认为在东部和西部每棵树上只有1个红苹果。北部没有红苹果,所以,忽略这一点。按照下面的步骤来解决这个问题。
下面是上述方法的实现。
Python3
# Python program for the above approach# Function to minimum no. of applesdef minApples():# If we get all required apple# from Southif M <= S* K:return M# If we required trees at# East and Westelif M <= S* K+ E+ W:return S* K+ (M-S* K)* K# If we doesn't have enough# red appleselse:return -1# Driver Codeif __name__== "__main__":# No. of red apple for giftM= 10# No. of red apple in each treeK= 15# No. of tree in NorthN= 0# No. of tree in SouthS= 1# No. of tree in WestW= 0# No. of tree in EastE= 0# Function Callans= minApples()print(ans) |
输出
10
时间复杂度。 O(1)
辅助空间。O (1)
读者请注意!现在不要停止学习。掌握竞争性编程的所有重要数学概念。 CP课程的基本数学以适合学生的价格获得所有重要的数学概念。要完成从学习语言到DS Algo和更多的准备工作,请参考 完整的面试准备课程.
我的个人笔记 箭头_下降_上升
保存