8 条题解

  • -1
    @ 2021-12-25 20:51:28
    #include <queue>
    #include <math.h>
    #include <stack>
    #include <stdio.h>
    #include <iostream>
    #include <vector>
    #include <iomanip>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    #define LL long long
    const int N = 1e6 + 10;
    const int INF = 0x3f3f3f3f;
    int n,m,x[N],sum=0,max1=0;
    int aa(int sum1)
    {
        int num=1;
        int temp=0;
        for(int i=0;i<n;i++)
        {
            temp+=x[i];
            if(temp>sum1)
            {
                num++;
                temp=x[i];
            }
        }
        if(num>m)
    		return 1;
        return 0;
    }
    int main()
    {
        cin>>n>>m;
        for(int i=0;i<n;i++)
        {
            cin>>x[i];
            sum+=x[i];
            if(x[i]>max1)max1=x[i];
        }
        int l=max1,r=sum;
        while(l<r)
        {
            int mid=(l+r)/2;
            if(aa(mid))l=mid+1;
            else r=mid;
        }
        cout<<r<<endl;
        return 0;
    
    }

    信息

    ID
    360
    时间
    1000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    313
    已通过
    97
    上传者