CF1479D 小计

*2900

牛逼题。

解法 \(1\)

无脑树上莫队,再套个值域分块,能过,时间复杂度 \(O(n^{1.5})\),但是不讨论此算法。

解法 \(2\)

树上询问我们很想使用主席树处理异或。
但是我们不知道怎么搞到一个区间值域内的只出现一次的数。

用 bitset 不合理。

这个时候,就出现的一种新思想。

异或哈希

我们只关心区间内是否有出现 \(1\)

换句话说,我们想知道有没有出现 \(1\)
这就是看两个区间是否完全相同。
这样的话,我们可以使用异或哈希操作。

两个区间完全相同,当且仅当这两个区间哈希值异或为 \(0\)

其实这就是和哈希的思想,但是异或哈希更好写一点。
然后后面随便在主席树上二分一下就好了,时间复杂度 \(O(n\log^2 n)\)

posted @ 2024-03-29 20:12  g1ove  阅读(9)  评论(0编辑  收藏  举报