1 条题解

  • 1
    @ 2026-10-29 20:45:00
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e6+10;
    int n,m,a[N],maxx;
    int f(int x){
        int s=0;
        for(int i=1;i<=n;i++){
            s+=(a[i]+x-1)/x-1;
            if(s>m){
    			return 0;
    		}
        }
        return 1;
    }
    int main(){
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            if(a[i]>maxx){
    			maxx=a[i];
    		}
        }
        int l=1,r=maxx;
        while(l<=r){
            int mid=(l+r)/2;
            if(f(mid)){
    			r=mid-1;
    		}
            else{
    			l=mid+1;
    		}
        }
        cout<<l;
        return 0;
    }
    
    
    
    • 1

    信息

    ID
    2641
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    15
    已通过
    8
    上传者