1 条题解

  • 1
    @ 2026-1-12 17:34:11
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+4;
    long long n,m,a[N],l,r,ans;
    bool f(int x){
        int s=a[1],t=1;
        for(int i=2;i<=n;i++){
            if(s+a[i]<=x)
                s+=a[i];
            else{
                t++;
                s=a[i];
            }
        }
        if(t<=m)
            return 1;
        return 0;
    }
    int main(){
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            l=max(l,a[i]);
            r+=a[i];
        }
        while(l<=r){
            int mid=(l+r)/2;
            if(f(mid)){
                r=mid-1;
                ans=mid;
            }
            else
                l=mid+1;
        }
        cout<<ans;
        return 0;
    }
    
    • 1

    信息

    ID
    181
    时间
    1000ms
    内存
    125MiB
    难度
    5
    标签
    递交数
    5
    已通过
    3
    上传者