知道这道题目的主要算法是二分,但是又不知道怎么才可以用二分,就是无法确定lr的值
后来,,又是通过参考别人的想法
l最小,是题目所保证的1
最大的应该是10^5
代码
package day;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class 分巧克力 {
/**
* @param args
* @throws IOException
*/
static final int N=100010;
static int n=0;
static int k=0;
static int a[]=new int [N];
static int b[]=new int [N];
static long res=0;
public static boolean check ( int mid) {
res=0;
for(int i=0;i<n;i++){
res+=a[i]/mid * (b[i]/mid);
}
if(res >=k){
return true;
}
else{
return false;
}
}
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String p[]=bufferedReader.readLine().split(" ");
n=Integer.parseInt(p[0]);
k=Integer.parseInt(p[1]);
int l=1,r=100001;
for(int i=0;i<n;i++){
p=bufferedReader.readLine().split(" ");
a[i]=Integer.parseInt(p[0]);
b[i]=Integer.parseInt(p[1]);
}
while(l<r){
int mid = l+r +1 >> 1;
if(check(mid)){
l=mid;
}else{
r=mid-1;
}
}
System.out.println(l);
}
}