样例过了结果爆零QVQ,大佬求助
查看原帖
样例过了结果爆零QVQ,大佬求助
1171003
zzz987楼主2024/1/15 17:03
#include<bits/stdc++.h>
#define int long long 
#define lowbit(x)	(x)&(-x)
using namespace std;
const int N=1e5+4;
int n,m;
int a1[N],tr1[N],tr2[N];
void add(int tr[],int x,int d){
	for(int i=x;i<=n;i+=lowbit(i))
		tr[i]^=d;
}
int sum(int tr[],int x){
	int ans=0;
	for(int i=x;i;i-=lowbit(i))
		ans^=tr[i];
	return ans;
}
signed main(){
	cin >>n>>m;
	for(int i=1;i<=n;i++){
		cin >>a1[i];
		if(i%2==0)
			add(tr2,i,a1[i]);
		else
			add(tr1,i,a1[i]);
	}
	while(m--){
		int x,a,b;	cin >>x>>a>>b;
		if(x==1){
			if(a%2==0)
				add(tr2,a,a1[a]^b);
			else
				add(tr1,a,a1[a]^b);
			
		}else{
			int x1=a%2,x2=b%2;
			if(x1!=x2)	cout <<"0";
			else{
				if(x1==0)
					cout <<sum(tr2,b)-sum(tr2,a-1);
				else	cout <<sum(tr1,b)-sum(tr1,a-1);
			}
			cout <<endl;
		}
	}
	return 0;
}
2024/1/15 17:03
加载中...