范围使用BIT或Fenwick树的XORed和

时间:2017-03-20 20:41:48

标签: algorithm xor fenwick-tree binary-indexed-tree

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

1 个答案:

答案 0 :(得分:2)

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

假设我们想要计算第k位对答案的贡献。如果它在p中设置,则答案是范围内的元素数量,该位的值等于零(否则,对于此位等于1的元素,它是相同的)。

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