关于测评姬
查看原帖
关于测评姬
564935
Clarinet楼主2024/8/1 14:45

很神奇,我这份二分代码在开 O2 的情况下会随机得分随机过点。

#include<bits/stdc++.h>
using namespace std;
int n,m,a[100010],ans=0;
int main(){
	cin>>n>>m;
	int l,r;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		l=max(l,a[i]);
		r+=a[i];
	}
	while(l<=r){
		int mid=(l+r)>>1,tt=1,pd=0;
		for(int i=1;i<=n;i++){
			if(pd+a[i]>mid){
				pd=0;
				tt++;
			}
			pd+=a[i];
		}
		if(tt<=m){
			ans=mid;
			r=mid-1;
		}
		else l=mid+1;
	}
	cout<<ans<<endl;
	return 0;
}

但是不开 O2 就 A 了,很神奇。

2024/8/1 14:45
加载中...