分巧克力![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7e665fc5ac8e223987daf2fcf13eb35f.png)
1.如果单独的使用逐个循环暴力,必超时
2.使用二分法降低复杂度 直到 l=r=mid ,得出最终结果
import java.util.Scanner;
public class Main009_分巧克力 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int k = in.nextInt();
int []h = new int[n];
int []w = new int[n];
for(int i=0;i<n;i++) {
h[i]=in.nextInt();
w[i]=in.nextInt();
}
int l = 1,r=100001,ans=0;
while(l<=r) {
int count=0;
int mid=(l+r)/2;
for(int i=0;i<n;i++) {
count += (h[i]/mid)*(w[i]/mid);
}
if(count>=k) {
l=mid+1;
ans = mid;
}else {
r=mid-1;
}
}
System.out.println(ans);
}
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/828bc94b43398b444da02a496c2060c0.png)