题解

1 条题解

  • 1
    @ 2022-07-19 17:41:47
    #include<bits/stdc++.h>
    using namespace std;
    long long n,m,a[1000005];
    bool check(long long mid)
    {
        long long j=1,sum=0;
        for(long long i=1; i<=m; ++i)
        {
            while(j<=n&&sum<mid)
            {
                sum+=a[j];
                ++j;
            }
            if(sum<mid)
                return 1;
            --j;
            sum=0;
        }
        return 0;
    }
    int main()
    {
        cin>>n>>m;
        for(long long i=1; i<=n; ++i)
            cin>>a[i];
        long long l=0,r=0;
        for(long long j=1; j<=n; ++j)
            r+=a[j];
        while(l<r)
        {
            long long mid=(l+r)>>1;
            if(check(mid))
                r=mid;
            else
                l=mid+1;
        }
        cout<<l-1<<endl;
        return 0;
    }
    
  • 1

信息

ID
1142
难度
5
分类
分治二分查找 点击显示
标签
递交数
1
已通过
1
通过率
100%
上传者