1 条题解

  • 0
    @ 2024-4-27 17:25:08

    TJ

    不准抄袭!

    二分TJ

    #include<bits/stdc++.h>
    using namespace std; 
    int n,m;
    
    bool isnt(int mid,int*a){
        int cnt=0;
        int x=a[1];
        for(int i=2;i<=n;i++)
        {
            if(x+a[i]>mid)
            {
                cnt++;
                x=a[i];
            }
            else
            {
                x+=a[i];
    
            }
        }
        return cnt>m;
    }
    int main()
    {
       
        cin>>n>>m;
        int*p=new int[n];
        int l=0,r=0;
        for(int i=1;i<=n;i++)
    
        {
            cin>>p[i];
            l=max(l,p[i]);
            r+=p[i];
        }
        while(l<=r)
    
        {
            int md=(l+r)/2;
            if(isnt(md,p)) l=md+1;//不合理
            else r=md-1;
        }
        cout<<l;
    }
    
    • 1

    信息

    ID
    660
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    22
    已通过
    7
    上传者