求教!
查看原帖
求教!
1565718
lanlanbeibei楼主2024/11/8 23:38
#include<iostream>
#include<algorithm>
using namespace std;
long long n,m,a[1000050];
bool check(long long mid){
	int ct=0;
	long long sum=0;
	for(int i=0;i<n;i++){
		if(sum+a[i]<=mid) sum+=a[i];
		else {
			sum=a[i];
			ct++;
		}
	}

	if(ct>=m) return false;
	else return true;
}
int main(){
	cin>>n>>m;
	long long l=0,r=0;
	for(int i=0;i<n;i++){
		cin>>a[i];
		l=max(l,a[i]);
		r+=a[i];
	} 
	while(l+1<r){
		long long mid=(l+r)/2;
		if(check(mid)) r=mid;
		else l=mid;
	}
	if(check(l)) cout<<l;
    else cout<<r;
} 

这段代码ct的数量不应该再加一才是分的总组数吗

2024/11/8 23:38
加载中...