求调或hack
查看原帖
求调或hack
1287433
ycyxh1楼主2025/6/25 13:16
#include<bits/stdc++.h>
using namespace std;
int t,a[5005],b[5005],qzha[5005],qzhb[5005],n;
bool vis[5005];
inline bool check(int qwq){
	int sum[3]={0,0,0},tmpa=1,tmpb=1;
//	cout<<qwq<<'\n';
	for(int i=1;i<=n;i++){
		while(qzha[i]-sum[1]-1>qwq&&tmpa<i){
			while(tmpa<i&&(vis[tmpa]||qzha[tmpa]<=sum[1])){
				tmpa++;
			}
			if(vis[tmpa]||qzha[tmpa]<=sum[1]){
				break;
			}
			sum[1]++;
			vis[tmpa]=1;
			tmpa++;
		}
		while(qzhb[i]-sum[2]-1>qwq&&tmpb<i){
			while(tmpb<i&&(vis[tmpb]||qzhb[tmpb]<=sum[2])){
				tmpb++;
			}
			if(vis[tmpb]||qzhb[tmpb]<=sum[2]){
				break;
			} 
			sum[2]++;
			vis[tmpb]=1;
			tmpb++;
		}
//		cout<<sum[1]<<' '<<sum[2]<<'\n';
		if(qzha[i]-sum[1]-1>qwq||qzhb[i]-sum[2]-1>qwq){
			return 0;
		} 
	}
	return 1;
}
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>t;
	while(t--){
		int l=0,r=100005,ans=0;
		cin>>n;
		for(int i=1;i<=n;i++){
			cin>>a[i]>>b[i];
			qzha[i]=qzha[i-1]+a[i];
			qzhb[i]=qzhb[i-1]+b[i];
		}
		while(l<=r){
			for(int i=0;i<=5000;i++){
				vis[i]=0;
			} 
			int mid=(l+r>>1);
			if(check(mid)){
				r=mid-1;
				ans=mid;
			}
			else{
				l=mid+1;
				ans=mid+1;
			}
		} 
		cout<<ans<<'\n';
	} 
	return 0;
}
2025/6/25 13:16
加载中...