9 条题解

  • 1
    @ 2025-3-29 14:38:04
    #include<bits/stdc++.h>
    using namespace std;
    int n, m, l,r, a[100010],ans;
    bool check(int mid)
    {
    	int sum=0,num=0;
    	for(int i=0;i<=n;i++)
    	{
    		if(sum+a[i]<=mid)
    		{
    			sum+=a[i];		
    		}
    		else
    		{
    			sum=a[i];
    			num++;
    		}
    	}
    	return num<=m;			
    }
    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)>>1;
    		if(check(mid))
    		{
    			r=mid;		
    		}
    		else
    		{
    			l=mid+1;
    		}
    	}
    	cout<<l;
    }
    
    ``
    • @ 2025-3-29 14:38:44

      不知道为什么老是超时

信息

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