1 条题解

  • 1
    @ 2026-8-6 19:59:40

    简单小二分

    #include<bits/stdc++.h>
    using namespace std;
    
    long long n,m,arr[400010];
    long long ans=1e18;
    
    bool check(int x){
        long long stu=0;
        for (int i = 1; i <= m; i++) {
            stu=stu+int((ceil(arr[i]*1.0/x)));
            if(stu>n)return false; 
        }
        return stu<=n;
    }
    
    void solve(){
        long long l=1,r=0;;
        cin>>n>>m;
        for(int i=1;i<=m;i++){ cin>>arr[i]; r=max(arr[i],r);}
    
        while(l<=r){
            int mid=(l+r)/2;
            if(check(mid)){r=mid-1;ans=mid;}
            else l=mid+1;
        }
    
        cout<<ans;
    }
    
    int main(){
        solve();
    }
    
    
  • 1

信息

ID
140
时间
1000ms
内存
256MiB
难度
2
标签
递交数
3
已通过
3
上传者