1 条题解
-
8
直说了吧,
这是史先考虑 的值,可见,如果某个元素在 ~ 中出现了偶数次,那么在异或过程中自己就会抵消,反之,若出现了奇数次,那么在异或后只会剩下一个自己。综上可知:
那么,我们只需要计算 即可。根据 可以将上述式子化简:
可能性一: 为偶
此时每一个 都能与 抵消,所以答案一定为
可能性二: 为奇
此时经过抵消,最后只剩下 。但是我们仍然不能 地去计算这个值,于是想到前缀异或和。
代码:
#include<bits/stdc++.h> using namespace std; long long a[200005],xr[200005]; int main(){ //freopen("dragon.in","r",stdin); //freopen("dragon.out","w",stdout); long long n,q,l,r,ans; cin>>n>>q; for(int i=1;i<=n;i++) cin>>a[i]; xr[1]=a[1]; for(int i=2;i<=n;i++) xr[i]=xr[i-2]^a[i]; cout<<endl; for(int i=1;i<=q;i++){ cin>>l>>r; if((r-l+1)%2==0) cout<<0<<endl; else{ ans=xr[r]^xr[max(0ll,l-2)]; cout<<ans<<endl; } } return 0; }
- 1
信息
- ID
- 780
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 39
- 已通过
- 10
- 上传者