求调,悬关
  • 板块题目总版
  • 楼主i_love_tym
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/16 14:01
  • 上次更新2023/11/3 09:33:07
查看原帖
求调,悬关
547457
i_love_tym楼主2023/7/16 14:01
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+5;
int x[N],s[N],a[N];
int f(int i,int j){
	return (s[j]-s[i-1])-(x[j]^x[i-1]);
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int T;
	cin>>T;
	while(T--){
		int n,q,l,r;
		cin>>n>>q;
		for(int i=1;i<=n;i++) cin>>a[i];
		cin>>l>>r;
		for(int i=1;i<=n;i++)
			s[i]=s[i-1]+a[i],x[i]=x[i-1]^a[i];		
		int ansl=l,ansr=r,MAX=f(l,r);	
		for(int i=l;i<=r;i++){
			int L=i,R=r,pos=0;
			while(L<=R){
				int mid=(L+R)/2;
				if(f(L,mid)!=MAX)
					L=mid+1;
				else R=mid-1,pos=mid;
			}
			if(pos==0) continue;
			else if(ansr-ansl+1>pos-i+1) ansl=i,ansr=pos;
		}	
		cout<<ansl<<' '<<ansr<<endl;
	}
}

CF1732C1

2023/7/16 14:01
加载中...