loj#6187. Odd

首先有个性质,假如这个区间合法,那么这个区间的异或和等于这个区间出现过的数的异或和。

出现过的数自然想到 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:由于是异或,正确性不一定能保证。可以考虑对每个权值随机赋值加强正确性。

loj#6187. Odd

上一篇:Delphi 设计模式:《HeadFirst设计模式》Delphi2007代码---组合模式之Menus[转]


下一篇:Cookie vs. Session