P8891 题解
思路
根据异或的性质,可以得出有且仅有 。不同的两个数字异或结果一定不为 。
因此对于每次操作,我们仅需将 即可。当 ,我们什么都不做。
时间复杂度 ,在 情况下不会超时。
注意由于 ,经过操作后 数组可能会超过 int 范围,需要使用 long long。
代码
#include<iostream>
using namespace std;
int n,m;
long long a[1000005];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
while(m--){
int x,y;
cin>>x>>y;
if(x!=0){
a[x]=a[x]-y;
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<' ';
}
return 0;
}