使用 BIT 或 Fenwick 树的范围异或求和

range XORed sum using BIT or Fenwick tree

对于给定的整数数组,我们必须计算给定范围 [L, R] 内的 XORed 总和,XORed 总和我的意思是 Σ(Arr[i]^p) 其中 i:[L,R]p 是一些数字。这可以很容易地完成,同时从数组的开头计算数组中每个 i-th 元素的 XORed 总和。现在问题发生在 p 变化非常频繁的时候。在这种情况下,重新计算 XORed 总和直到每个 i-th 元素似乎不是理想的解决方案。我想这可以使用 fenwick treeBIT 来完成。但是我无法弄清楚如何继续 fenwick 树或 BIT。任何帮助,将不胜感激。

我们可以独立解决每个位的问题。

假设我们要计算第 k 位对答案的贡献。如果在p中设置,则答案是该位值为零的范围内元素的个数(否则,除此位为一的元素外,其他情况相同)。

如何高效地统计此类元素的个数?我们可以为每一位构建一个前缀和数组。这样,我们就可以在恒定时间内获得某个范围内具有或不具有给定位的元素的数量。