华为OD 猴子吃桃(100分)【java】A卷+B卷"/>
华为OD 猴子吃桃(100分)【java】A卷+B卷
华为OD统一考试A卷+B卷 新题库说明
你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。
B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。
我将持续更新最新题目
获取更多免费题目可前往夸克网盘下载,请点击以下链接进入:
我用夸克网盘分享了「华为OD题库Java.zip」,点击链接即可保存。打开「夸克APP」
链接:
提取码:3p8Y
题目类型:数组
题目描述:
孙悟空喜欢吃蟠桃,一天他乘守卫蟠桃园的天兵天将离开了而偷偷的来到王母娘娘的蟠桃园偷吃蟠桃。
已知蟠桃园有 N 棵蟠桃树,第 i 棵蟠桃树上有 N[i](大于 0)个蟠桃,天兵天将将在 H(不小于蟠桃树棵数)小时后回来。
孙悟空可以决定他吃蟠桃的速度 K(单位:个/小时),每个小时他会选择一颗蟠桃树,从中吃掉 K 个蟠桃,如果这棵树上的蟠桃数小于 K,他将吃掉这棵树上所有蟠桃,然后这一小时内不再吃其余蟠桃树上的蟠桃。
孙悟空喜欢慢慢吃,但仍想在天兵天将回来前将所有蟠桃吃完。
求孙悟空可以在 H 小时内吃掉所有蟠桃的最小速度 K(K 为整数)。
输入描述:
从标准输入中读取一行数字,前面数字表示每棵数上蟠桃个数,最后的数字表示天兵天将将离开的时间。
输出描述:
吃掉所有蟠桃的 最小速度 K(K 为整数)或 输入异常时输出 -1。
示例 1:
输入
3 11 6 7 8
输出
4
说明:
天兵天将8个小时后回来,孙悟空吃掉所有蟠桃的最小速度4。
第1小时全部吃完第一棵树,吃3个,
第2小时吃4个,第二棵树剩7个,
第3小时吃4个,第二棵树剩3个,
第4小时吃3个,第二棵树吃完,
第5小时吃4个,第三棵树剩2个,
第6小时吃2个,第三棵树吃完,
第7小时吃4个,第4棵树剩3个,
第8小时吃3个,第4棵树吃完。
思路分析
二分法的应用,找到满足条件的最小K。可以参考875. 爱吃香蕉的珂珂,原题。
参考代码:
import java.util.Arrays;
import java.util.Scanner;public class MonkeyEatPeach {public static void main(String[] args) {Scanner in = new Scanner(System.in);String[] str = in.nextLine().split(" ");int[] nums = new int[str.length - 1];for (int i = 0; i < str.length - 1; i++) {// 判断是否有异常输入,非数字for (int j = 0; j < str[i].length(); j++) {char ch = str[i].charAt(j);if (ch >= '0' && ch <= '9') {continue;} else {System.out.println(-1);return ;}}nums[i] = Integer.parseInt(str[i]);}int H = Integer.parseInt(str[str.length - 1]);Arrays.sort(nums);int left = 1, right = nums[nums.length - 1];while (left < right) {int mid = (right - left) / 2 + left;int time = 0;for (int num : nums) {time += (num + mid - 1) / mid;}if (time <= H) {right = mid;} else {left = mid + 1;}}System.out.println(left);}
}
更多推荐
华为OD 猴子吃桃(100分)【java】A卷+B卷
发布评论