小招喵喜欢吃喵粮。这里有 N 堆喵粮,第 i 堆中有 p[i] 粒喵粮。喵主人离开了,将在 H 小时后回来。
小招喵可以决定她吃喵粮的速度 K (单位:粒/小时)。每个小时,她将会选择一堆喵粮,从中吃掉 K 粒。如果这堆喵粮少于 K 粒,她将吃掉这堆的所有喵粮,然后这一小时内不会再吃更多的喵粮。
小招喵喜欢慢慢吃,但仍然想在喵主人回来前吃掉所有的喵粮。
返回她可以在 H 小时内吃掉所有喵粮的最小速度 K(K 为整数)。
小招喵喜欢吃喵粮。这里有 N 堆喵粮,第 i 堆中有 p[i] 粒喵粮。喵主人离开了,将在 H 小时后回来。
小招喵可以决定她吃喵粮的速度 K (单位:粒/小时)。每个小时,她将会选择一堆喵粮,从中吃掉 K 粒。如果这堆喵粮少于 K 粒,她将吃掉这堆的所有喵粮,然后这一小时内不会再吃更多的喵粮。
小招喵喜欢慢慢吃,但仍然想在喵主人回来前吃掉所有的喵粮。
返回她可以在 H 小时内吃掉所有喵粮的最小速度 K(K 为整数)。
第一行输入为喵粮数组,以空格分隔的N个整数
第二行输入为H小时数
最小速度K
3 6 7 11 8
4
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] strs = br.readLine().split(" ");
int n = strs.length;
int[] foods = new int[n];
// 速度下线为1,上线为max(foods)
int lb = 1, ub = 0;
for(int i = 0; i < n; i++){
foods[i] = Integer.parseInt(strs[i]);
ub = ub < foods[i]? foods[i]: ub;
}
int H = Integer.parseInt(br.readLine());
int v = ub;
while(lb <= ub){
int m = lb + ((ub - lb) >> 1);
if(timeConsume(foods, m) <= H){
// 速度足够,往左二分
v = m;
ub = m - 1;
}else{
// 速度不够,往右二分
lb = m + 1;
}
}
System.out.println(v);
}
private static int timeConsume(int[] foods, int v) {
int time = 0;
for(int i = 0; i < foods.length; i++){
time += (foods[i] + v - 1) / v;
}
return time;
}
} import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = sc.nextLine().split(" ");
int len = s.length;
int[] nums = new int[len];
for(int i = 0;i < len;i++){
nums[i] = Integer.parseInt(s[i]);
}
int k;
int h = sc.nextInt();
int cnt = h + 1;
for(k = 1;;k++){
cnt = 0;
for(int j = 0;j < len;j++){
if((nums[j]%k) == 0 ){
cnt += (nums[j]/k);
}
else{
cnt += (nums[j]/k+1);
}
}
if(cnt <= h){
break;
}
}
System.out.println(k);
}
}
我的挺简单的吧
import java.util.*;
//42
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] arr = sc.nextLine().split(" ");
Arrays.sort(arr,new Compare());
int hour = sc.nextInt();
int k = Integer.parseInt(arr[arr.length-1]);
int h = 0;
while (true) {
for (int i = 0; i < arr.length; i++) {
if (Integer.parseInt(arr[i]) <= k) {
h++;
} else if (Integer.parseInt(arr[i]) / k == Integer.parseInt(arr[i]) * 1.0 / k) {
h += Integer.parseInt(arr[i]) / k;
} else {
h += Integer.parseInt(arr[i]) / k + 1;
}
}
if (h > hour) {
break;
}
k--;
h = 0;
}
System.out.println(k+1);
}
static class Compare implements Comparator<String>{
public int compare(String o1, String o2) {
return Integer.parseInt(o1)-Integer.parseInt(o2);
}
}
}
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] s = br.readLine().split(" "); int[] p = new int[s.length]; int sum = 0; for(int i = 0;i < p.length;i++){ p[i] = Integer.parseInt(s[i]); sum += p[i]; } String ss = br.readLine(); int h = Integer.parseInt(ss); int k = sum % h == 0 ? sum / h : sum / h + 1; while(true){ int result = 0; for(int i = 0;i < p.length;i++){ result += p[i] % k ==0 ? p[i] / k : p[i] / k + 1; } if(result > h){ k++; }else{ break; } } System.out.println(k); } }