题目描述
机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第i堆砖中有bricks[i]块砖头,要求在8小时内搬完。机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格每小时补充一次且能量格只在这一个小时有效,为使得机器人损耗最小化尽量减小每次补充的能量格数 为了保障在8小时内能完成搬砖任务,请计算每小时给机器人充能的最小能量格数。
1、无需考虑机器人补充能量格的耗时,
2、无需考虑机器人搬砖的耗时;
3、机器人每小时补充能量格只在这一个小时中有效;
输入描述
第一行为一行数字 空格分割
输出描述
机器人每小时最少需要冲的能量格 ,若无法完成任务 输出-1
用例
输入
30 12 25 8 19
输出
15
输入
10 12 25 8 19 8 6 4 17 19 20 30
输出
-1
import math
def min_e(b, H):
l, r = 1, max(b)
while l < r:
m = (l + r) // 2
if sum(math.ceil(i/m) for i in b) > H:
l = m + 1
else:
r = m
if sum(math.ceil(i/l) for i in b) > H:
return -1
return l
b = list(map(int, input().split()))
print(min_e(b,8))
版权声明:本文为博主作者:KALA51773原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/KALA51773/article/details/134360777