退役后随便选一个二分练练手感
这题就是二分模板题。。
二分答案切多大,代入检验即可
#include <bits/stdc++.h>//二分答案 using namespace std; int a[100000+5]; long long sum; int main(){ int n,k,l,r; cin>>n>>k; for(int i=1;i<=n;i++){cin>>a[i]; r=max(a[i],r); sum+=a[i];}//r上限优化 if(sum<k){cout<<0;return 0;} //特判最多能否切出k块 ,不特判第4点会re,不知道为什么。。。有懂的人可以回复一下 l=0; while(l<=r){ int mid=(l+r)>>1,x=0; for(int i=1;i<=n;i++) x+=a[i]/mid; if(x>=k) l=mid+1; else r=mid-1; }//二分模板 cout<<r; return 0; }