求调QWQ
  • 板块学术版
  • 楼主CNCCCNCC
  • 当前回复23
  • 已保存回复23
  • 发布时间2025/7/29 22:25
  • 上次更新2025/7/30 11:42:25
查看原帖
求调QWQ
1368616
CNCCCNCC楼主2025/7/29 22:25

为什么80分? 记录 题目

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[100001];
int c(long long x){
	int sum=0,t=a[1];
	for(int i=2;i<=n;i++){
		if(t+a[i]>x){
			t=a[i];
			sum++;
		}
		else{
			t+=a[i];
		}
	}
//	cout<<x<<' '<<sum<<endl;
	if(sum>=m)return 1;
	else return 0;
} 
int main(){
	cin>>n>>m;
	long long l=1,r=0;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		l=max(a[i],l);
		r+=a[i];
	}
	//cout<<l<<' '<<r<<endl;
	while(l+1!=r){
		//if(r>100)return 0;
		long long m=(l+r)/2;
		if(c(m)){
			//cout<<1;
			l=m;
		}	
		else{
			//cout<<2;
			r=m;
		}
	}
	cout<<r;
	return 0;
}
2025/7/29 22:25
加载中...