有思路,可是错了,老师觉得是对的,求调QWQ
查看原帖
有思路,可是错了,老师觉得是对的,求调QWQ
908638
chair0114楼主2023/7/15 16:55
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const ll MAXN=1e6+55;
ll n,m,a[MAXN],ans,maxx;
inline bool look(ll mid){
	ll sum=0;
	ll now=0;
	for(ll i=1;i<=n;++i){
		if(a[i]+now<=mid){
			now+=a[i];
		}
		else{
			++sum;//分段
			now=a[i];
		}
	}
	return sum>=m;
}
void fd(){
	ll l=maxx,r=1e8;
	while(l<=r){
		ll mid=(l+r)>>1;
		if(look(mid))
			r=mid-1,ans=mid;
		else
			l=mid+1;	
	}
}
int main(){
	cin>>n>>m;
	for(ll i=1;i<=n;++i){
		cin>>a[i];
		maxx=max(a[i],maxx);
	}
	fd();
	cout<<ans;
	return 0;
}
2023/7/15 16:55
加载中...