今天刷到一题需要使用异或前缀和,记录一下。
参考普通前缀和,定义一个前缀和数组为 s[n],令 s[i] = s[i-1]^a[i],则对于一个区间 [l,r]的异或和为 s[r]^s[l-1]。主要利用了 a ^ a = 0的这一性质。
通过异或前缀和,我们可以快速求出某一区间的异或和。
此外,关于异或和还有一个小性质,若一个区间的异或前缀和等于该区间的普通前缀和,则该区间的任意子区间也满足异或前缀和等于该子区间的普通前缀和。
今天刷到一题需要使用异或前缀和,记录一下。
参考普通前缀和,定义一个前缀和数组为 s[n],令 s[i] = s[i-1]^a[i],则对于一个区间 [l,r]的异或和为 s[r]^s[l-1]。主要利用了 a ^ a = 0的这一性质。
通过异或前缀和,我们可以快速求出某一区间的异或和。
此外,关于异或和还有一个小性质,若一个区间的异或前缀和等于该区间的普通前缀和,则该区间的任意子区间也满足异或前缀和等于该子区间的普通前缀和。