题目描述

机器人搬砖,一共有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))

精彩文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: