【每日一题0417】二分答案模板题

https://ac.nowcoder.com/acm/problem/23049

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

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务