|
|
更好的阅读体验:https://www.cnblogs.com/To-Carpe-Diem/p/19555727
大意
求一段区间 $[l, r]$ 里面的 $(i, j)$ 二元组,满足 $s[i] \oplus s[i + 1] \cdots \oplus s[j] = k$。
思路
首先,我们不难想到这个异或的性质可以扩展,然后,我们可以考虑用莫队求解此题。
对于询问分块,那我们只需要考虑加入一个点与删除一个点对 $ans$ 的贡献。
由于异或具有前缀和的性质,即为异或和,那么我们的 $s[i] \oplus s[i + 1] \cdots \oplus s[j] = s[j] \oplus s[i - 1] = k$,也就是说,我们的点 $s[j] = s[i - 1] \oplus k$,于是我们对于点 $i$ 来说,加入这个点就会对 $s[i - 1] \oplus k$ 的位置的值产生贡献,使得 $s[i - 1] \oplus s[j] = k$,那么这个题就和 [P1494 [国家集训队] 小 Z 的袜子](https://www.cnblogs.com/To-Carpe-Diem/p/19434503) 一样了。
2026-01-30 20:47:36
|