l=0 r=INT_MAX就行了 不用再去算了
查看原帖
l=0 r=INT_MAX就行了 不用再去算了
1411990
lengfengwcx楼主2024/8/20 15:16

那代码前给个关注,给个小赞鼓励一下吧

#include<bits/stdc++.h>
using namespace std;
long long n,m,l,r,c,num,x,t,mid,ans,i,j;
int a[100000001];
bool check(int x)
{
	int v=0,t=1;
	for(i=1;i<=n;i++)
	{
		if(v+a[i]>x)
		{
       		v=a[i];
   			t++;
   		}
   		else v+=a[i];
		if(t>m||v>x) return 0;
	}
	return 1;
}
int main()
{
	cin>>n>>m;
	for(i=1;i<=n;i++)
		cin>>a[i];
	l=0;r=INT_MAX;
	while(l<=r)
	{
		mid=(l+r)/2;
		if(check(mid))
			r=mid-1;
		else l=mid+1;
	}
	cout<<l;
	return 0;
}


2024/8/20 15:16
加载中...