解这道题首先要知道一些异或的小知识
1.a⨁b=b⨁aa\bigoplus b = b \bigoplus aa⨁b=b⨁a 很简单,就是交换律,三个及以上都一样
2.a⨁a=0a \bigoplus a=0a⨁a=0
3.a⨁0=aa \bigoplus 0=aa⨁0=a
根据性质2可以知道重复异或一个数相当于在异或和里删去了这个数,所以更新异或和就可以先异或旧值,更新旧值后再异或新值
根据性质3可以知道,一个数异或0是不变的,所以如果AiA_iAi 是0就不用重复计算,可以用一个数组来记录≥0\geq0≥0的元素下标
这样操作2的时间复杂度就省下来了