#4tle,不懂为啥
查看原帖
#4tle,不懂为啥
1477837
Yangzp666楼主2024/11/9 22:03
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100010];
int cnt;int ans;
void erfen(int l,int r)
{
	if(l==r) 
	{
//		ans=(l+r)/2;
		return ; 
	}
	int mid=(l+r)/2;
	cnt=1;
	int tot=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i]+tot>mid)
		{
			tot=a[i];
			cnt++;
		}
		else tot+=a[i];
	}
//	cout<<cnt<<" "<<mid<<" "<<l<<" "<<r<<endl;
	if(cnt==m) 
	{
		ans=mid;
		erfen(l,mid);
	}
	else  if(cnt<m)
	{
		erfen(l,mid-1);
	}
//	else if(cnt>m) 
else 
	erfen(mid+1,r);
}
int main()
{
	int SUM=0,max=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];SUM+=a[i];
		if(a[i]>max) max=a[i];
	}
//	cout<<max<<" "<<SUM;
	erfen(max,SUM);
	cout<<ans;
}
2024/11/9 22:03
加载中...