P8647 [蓝桥杯 2017 省 AB] 分巧克力 二分 普及-

赤裸二分

#include<iostream>
#include<cmath>
using namespace std;
const int N=100010;
int k,n,m=0;
int cho[N][2];

bool check(int mid) {
    int cot=0;
    for(int i=1;i<=n;i++){
        cot+=(cho[i][0]/mid)*(cho[i][1]/mid);
        if(cot>=k) return true;
    }
    return cot>=k;
}

int binary_search() {
    int l=1,r=m;
    while(l<r) {
        int mid=(l+r+1)/2;
        if(check(mid)) l=mid;
        else r=mid-1;
    }
    return l;
}

int main() {
    scanf("%d %d",&n,&k);
    for(int i=1; i<=n; i++) {
        scanf("%d %d",&cho[i][0],&cho[i][1]);
        m=max(cho[i][0],m);
        m=max(cho[i][1],m);
    }
    cout<<binary_search();
    return 0;
}

 

posted @ 2023-02-07 17:10  关于42号星球  阅读(74)  评论(0编辑  收藏  举报