P7585 [COCI2012-2013#1] LJUBOMORA 二分 普及-

赤裸二分

#include<iostream>
#include<cmath>
using namespace std;
const int N=300010;
int n,m,rr;
int c[N];

bool check(int mid) {
    int cot=0;
    for(int i=1; i<=m; i++) {
        int x=c[i]/mid;
        int y=c[i]%mid;
        if(y) cot+=x+1;
        else cot+=x;
    }
    return cot<=n;
}

int binary_search() {
    int l=1,r=rr;
    while(l<r) {
        int mid=(l+r)/2;
        if(check(mid)) r=mid;
        else l=mid+1;
    }
    return l;
}

int main() {
    scanf("%d %d",&n,&m);
    for(int i=1; i<=m; i++) {
        scanf("%d",&c[i]);
        rr=max(c[i],rr);
    }
    cout<<binary_search();
    return 0;
}

 

posted @ 2023-02-07 17:47  关于42号星球  阅读(65)  评论(0编辑  收藏  举报