--- title: "分巧克力" created: 2025-11-28 tags: - 算法 --- # 分巧克力 ## 题目 [分巧克力](https://www.acwing.com/problem/content/1229/) ![[image-4d3386a8.png]] ## 思路分析 先想能否二分 怎么二分 再想如何check ## 代码实现 ```cpp #include using namespace std; #define endl '\n' const int N=1e5+10; int H[N],W[N]; int n,k; bool check(int mid){ int sum=0; for(int i=1;i<=n;i++) sum+=(H[i]/mid)*(W[i]/mid); if(sum>=k) return true; return false; } int main() { ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); cin>>n>>k; int maxv=-1; for(int i=1;i<=n;i++){ cin>>H[i]>>W[i]; maxv=max({maxv,H[i],W[i]}); } int l=1,r=maxv; while(l>1; if(check(mid)) l=mid; else r=mid-1; } cout<