AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3305. 孙悟空吃蟠桃

中等通过率 59% · 提交 1,049 · 通过 614
二分查找数学

小慕正在负责一个自动化果园的采摘项目。果园里有 N 棵蟠桃树,第 i 棵树上结有 N[i](大于 0)个蟠桃,项目设定的采摘窗口为 H 小时(H 不小于果树棵数)。 小慕需要设定采摘机器人的采摘速度 K(单位:个/小时)。每个小时,机器人会选定一棵树,从上面摘下 K 个蟠桃;如果这棵树上的蟠桃数少于 K,机器人就会摘完这棵树上的所有蟠桃,并且在这一小时内不再去其他树采摘。 小慕希望采摘过程尽量平稳,但又必须确保在 H 小时内将所有蟠桃摘完。 请帮小慕计算出在 H 小时内摘完所有蟠桃所需的最小速度 K(K 为整数)。

提示:带虚线的词点一下有通俗解释。

输入描述

<p> 第一行输入为 N 个数字,N 表示桃树的数量,这 N 个数字表示每颗桃树上蟠桃的数量 </p> <p> 第二行输入为一个数字,表示守卫离开的时间 H。 </p> <p> 其中数字通过空格分割,N、H 为正整数,每颗树上都有蟠桃 </p> <p> 0 < N < 10000,0< H < 10000。 </p>

输出描述

吃掉所有蟠桃的最小速度 K(K 为整数),无解或者输入异常时输出 0 。

示例

示例 1

输入

3 11 6 7 8
5

输出

11

示例 2

输入

3 11 6 7 8
1

输出

0

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
二分查找吃桃速度 K 桃子数: 3, 11, 6, 7, 8 H=5小时 K=1 K=5 K=8 K=11 K=15 K=20 二分查找区间 [1, max(桃子数)] 用当前 K 模拟能否吃完? 不能 缩小右边界 增大左边界
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「孙悟空吃蟠桃」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。