典型的二分答案模板题
二分一个长度,检查答案是否大于等于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; }