树状数组.
- 如果直接离散化 + 莫队,时间复杂度 $O(m\sqrt n)$ ,无法通过.
- 如果在计算异或和时,一个数在区间内出现了 $k$ 次,使最后一次不计入贡献,那么就只算了 $k-1$ 次.
- 这样得到的答案就是出现偶数次的数的异或和.
- 将询问离线,并按照 $r$ 排序,于是可以从前往后一个个加入数.加入一个数 $a_i$ 后,就处理所有 $r=i$ 的询问.
- 每次加入数 $x$ 时,在它的上一次出现的位置(若有)加入贡献即可.用树状数组维护前缀异或和.
$bzoj$ 上数据有点毒.还需要开 $long\ long$.
1 |
|