题目链接:1227. 分巧克力 - AcWing题库
思路:二分答案,每次二分边长
代码:
#include<bits/stdc++.h>
using namespace std;typedef pair<int,int> PII;#define N 100010int n,k;
PII a[N];bool check(int mid){int cnt=0;for(int i=1;i<=n;i++){if(a[i].first<mid||a[i].second<mid)continue;cnt+=(a[i].first/mid)*(a[i].second/mid);}if(cnt>=k)return true;return false;
}int main(){cin>>n>>k;for(int i=1;i<=n;i++)cin>>a[i].first>>a[i].second;int l=1,r=N;while(l<=r){int mid=l+r>>1;if(check(mid))l=mid+1;else r=mid-1;}cout<<r<<endl;return 0;
}