社区讨论

80求调!WAon#4 玄关

P1182数列分段 Section II参与者 7已保存回复 19

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
19 条
当前快照
1 份
快照标识符
@mhj1xpxa
此快照首次捕获于
2025/11/03 19:23
4 个月前
此快照最后确认于
2025/11/03 20:36
4 个月前
查看原帖
mid是否大于a[i]也判了TAT
CPP
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5 + 5;
int n,m,a[N],ans,mx,sum;

bool check(int x){
	int cnt=0,tot=0;
	for(int i=1;i<=n;i++){
		if(tot+a[i]>x){
			cnt++;
			tot=a[i];
		}else{
			tot+=a[i];
		}
		if(a[i]>x){
			return 0;
		}
	}
	return cnt>=m;
}

signed main() {
	freopen("jkp.in","r",stdin);
	freopen("jkp.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		mx=max(mx,a[i]);
		sum+=a[i];
	}
	int l=mx,r=sum;
	while(l<=r){
		int mid=(l+r)/2;
		if(check(mid)){
			l=mid+1;
			ans=l;
		}else{
			r=mid-1;
		}
	}
	cout<<ans<<"\n";
	return 0;
}

回复

19 条回复,欢迎继续交流。

正在加载回复...