首先有个性质,假如这个区间合法,那么这个区间的异或和等于这个区间出现过的数的异或和。
出现过的数自然想到 HH 的项链,考虑记 $las$,然后一个数只对 $[las_{a[i]}+1,i]$ 有贡献。
记 $ s_i=v[1] \ xor \ v[2] \ xor \ ... \ v[i]$ 即前缀异或和。
$sum1$ 为区间出现过的次数的异或和。
那么,答案就是 $s_y \ xor \ s_{x-1} = sum1_y$。
考虑维护下这东西即可,大体思路应该是这样,但具体怎么实现可能有些没提到(因为我还不会没写)
upt:由于是异或,正确性不一定能保证。可以考虑对每个权值随机赋值加强正确性。
原文:https://www.cnblogs.com/xugangfan/p/15153175.html