专栏文章

5.24 二分答案2

个人记录参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mip7osvr
此快照首次捕获于
2025/12/03 07:31
3 个月前
此快照最后确认于
2025/12/03 07:31
3 个月前
查看原文

课堂练习

U564349 限时秒杀

题意:。。。。。
单调性分析:什么越大,什么什么就越大。
CPP
#include<bits/stdc++.h>
#define int long long 
using namespace std;
int n,m,a[10000001],l,r;
// 这个函数是干什么的
bool check(int x){
	int sum=0,ans=0; // 
	for(int i=1;i<=n;i++){
		if(sum+a[i]<=x) sum+=a[i];
		else{
			ans++;
			sum=a[i];
		}
	}
	if(sum!=0) return ans+1<=m;
	else return ans<=m;
}
signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		l=max(l,a[i]);
		r+=a[i];
	}
	l=l-1,r=r+1; // 为什么要初始化为这个
	while(l+1<r){
		int mid=(l+r)/2;
		if(check(mid)) r=mid; // 为什么要r=mid
		else l=mid;
	}
	cout<<r; //为什么要输出r
	return 0;
}

家庭作业

评论

0 条评论,欢迎与作者交流。

正在加载评论...