一开始没做出来。看了luogu里的题解才做出来。
因为它是出现次数奇数,而对一个数异或上奇数次有一个美好的性质:它不为
0。我们考虑随机权值。
开一棵值域主席树,维护值域区间内权值的异或和。
在查询的时候,能往左子树走就尽量往左子树走,如果不能往左子树走(即左子树权值异或和为 0),再往右子树走。(也就是在主席树上二分)
注意一下离散化。rand()有值域上限。
值域主席树异或和查询算法
一开始没做出来。看了luogu里的题解才做出来。
因为它是出现次数奇数,而对一个数异或上奇数次有一个美好的性质:它不为
0。我们考虑随机权值。
开一棵值域主席树,维护值域区间内权值的异或和。
在查询的时候,能往左子树走就尽量往左子树走,如果不能往左子树走(即左子树权值异或和为 0),再往右子树走。(也就是在主席树上二分)
注意一下离散化。rand()有值域上限。
7万+
6144
2563
396
163

被折叠的 条评论
为什么被折叠?