使用二分答案。
如果同时启用 k 台服务器,那么第 i 个任务需要的时间为:
ceil(tasks[i]/k)
也就是:
服务器集群中有 n 个待处理的计算任务,第 i 个任务需要的总计算量为 tasks[i] 。所有任务必须在 h 小时内完成。
你需要决定同时启用 k 台服务器。系统按小时运行,每台服务器每小时可处理 1 计算量,处理规则如下:
请计算并返回最少需要同时启用多少台服务器,才能确保在 h 小时内完成所有任务。如果无法完成,请返回 −1 。
第一行输入整数 n ;
第二行输入 n 个正整数表示 tasks ;
第三行输入整数 h 。
至少多少服务器可满足要求,无解返回 −1 。
输入
5
30 11 23 4 20
5
输出
30
说明
因为 h = 5 小时,而最大的任务需求为 30 台时,必须至少有 30 台服务器才能在第 1 小时完成该任务,否则不可能在 5 小时内全部完成。
输入
4
3 6 7 11
8
输出
4
说明
启用 4 台服务器时,调度方案如下:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册