典型的二分答案模板题
二分一个长度,检查答案是否大于等于K即可,若可以增大长度,不可以缩小长度
#include<bits/stdc++.h>
using namespace std;
#define N 200010
int num[N];int k;int n;
int check(int len){
int cnt=0;
for(int i=1;i<=n;++i){
cnt+=num[i]/len;
}
return cnt>=k;
}
int main(){
cin>>n>>k;
int mx=0;
for(int i=1;i<=n;++i){
cin>>num[i];
}
int le=1;
int ri=1e9;
int ans=0;
while(ri>=le){
int mid=le+(ri-le)/2;
if(check(mid)){
ans=mid;
le=mid+1;
}else {
ri=mid-1;
}
}
cout<<ans<<endl;
return 0;
} 
京公网安备 11010502036488号