【每日一题】(2026/3/24)【题目名称】分巧克力
题目概述:

输入输出描述:

解题思路:
为什么会想到用二分?是因为当我们边长越来越大的时候,所得到的巧克力数目是越来越少的,呈现一个递减的规律,这个时候我们就可以用二分去解决此类最大、最小、相等的问题
代码:
import java.util.*;
public class Main {
static int[][] arr;
static int N;
static int K;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N=sc.nextInt();
K=sc.nextInt();
arr=new int[N][2];
for (int i = 0; i < N; i++) {
arr[i][0]=sc.nextInt();
arr[i][1]=sc.nextInt();
}
int left=1;
int right=100000;
int mid=0;
int ans=0;
while(left<=right){
mid=(left+right)/2;
if(cntchoclate(mid)>=K){
if(ans<mid)ans=mid;
left=mid+1;
}else{
right=mid-1;
}
}
System.out.println(ans);
}
public static int cntchoclate(int x){
int cnt=0;
for (int i = 0; i < N; i++) {
cnt+=(arr[i][0]/x)*(arr[i][1]/x);
}
return cnt;
}
}

浙公网安备 33010602011771号