米兰图斯克是宇宙中最富有的人。在毕生致力于推进我们的太空探索技术之后,他终于准备好退休了。作为一名太空爱好者,他想做的第一件事就是依次访问 n 颗行星 p1、p2、……、pn。他目前在 p0 星球上。
米兰知道行星 pi 和 pi + 1 之间的距离(对于 0 ≤ i < n)是 d[i] 光年。他的宇宙飞船每光年使用 1 吨化石燃料。他从一个满的油箱开始,可以在 n 颗行星中的任何一个上加满油箱(但他不能在两个行星之间用完)。建造宇宙飞船进行燃料补给的成本很高。由于经济拮据(他没那么富有),他最多可以加满油箱 k 次。
为了省钱并使他的飞船更轻,米兰正在寻找最小的油箱,使他能够完成他的太空旅行并到达行星 pn。使他能够这样做的最小油箱容量是多少?
Input
Input由两行组成:
第一行包含由单个空格分隔的 n 个整数。这些数字指定了列表 d。
第二行包含一个整数 k。
Output
输出一个整数:米兰飞船的最小油箱容量(以吨为单位)。
限制
1 ≤ n ≤ 100
0 ≤ k ≤ 100
1 ≤ d[i] ≤ 100
时间限制
您的程序必须在任何有效输入的 1 秒内完成运行。
Sample Input 1
2 1 1
3
Sample Output 1
2
Sample1 解释
容量至少应为2;否则,米兰无法从 p0 移动到 p1。
如果容量是 2,米兰可以简单地在 p1 上填满他的油箱。请注意,在他加满油之前,他的油箱是空的,但这没关系,因为他已经在 p1 上。
Sample Input 2
1 1 1 1 1 1 1
2
Sample Output 2
3
Sample Input 3
5 5 5 5
4
Sample Output 3
5
我的大致思路是这样的
最多有100个输入,并且每两个加油站的距离小于等于100,所以我们可以判断出,最大距离为 100 * 100 = 10000
那不论k值为多少,最后的答案的取值范围一定是0 ~ 10000
正着来
从前往后loop每一个答案,
当答案为n时,需要加几次油?
当你第一次找到 需要加 <= k 次油的时候,说明你找到答案了,返回n值。
但是不知道该怎么用代码表达
无力跪
总感觉好复杂
我的代码:
current_fuel_in_tank = capacity_of_tank
refuelling_required = 0
n = len(d)
for i in range(0,n-1):
current_fuel_in_tank -= d[i]
if(current_fuel_in_tank < d[i+1]):
refuelling_required += 1
current_fuel_in_tank = capacity_of_tank