建议加强数据
查看原帖
建议加强数据
785639
xuchuhan楼主2024/7/1 16:58

RT,我写的代码样例没过,但是交上去可以 A。

这份代码如下:

#include<bits/stdc++.h>
#define int long long
#define lowbit(x) x&(-x)
using namespace std;
const int N=1e6+10,MAXN=1e6+5;
int n,ans,M;
int a[N],s[N];
int tree[N][2];
void update(int x,int op){
	x++;
	while(x<=M)
		tree[x][op]++,x+=lowbit(x);
	return;
}
int query(int x,int op){
	int res=0;
	x++;
	while(x>0)
		res+=tree[x][op],x-=lowbit(x);
	return res;
}
signed main(){
	M=MAXN;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		s[i]=s[i-1]+a[i];
	}
	for(int k=0;k<=20;k++){
		int res=0;
		memset(tree,0,sizeof(tree));
		for(int i=0;i<=n;i++){
			int num=s[i]&(1<<k);
			int con=s[i]&((1<<k)-1);
			if(num%2){
				res+=query(con,0)+query(MAXN,1)-query(con,1);
				update(con,1);
			}
			else{
				res+=query(con,1)+query(MAXN,0)-query(con,0);
				update(con,0);
			}
		}
		if(res%2)
			ans+=(1<<k);
	}
	cout<<ans;
	return 0;
}
2024/7/1 16:58
加载中...