对于给定的整数数组,我们必须计算XORed
和给定范围[L, R]
的总和,XORed
总和我的意思是Σ(Arr[i]^p)
其中i:[L,R]
而p
是一些数字。从阵列的开头计算XORed
和直到数组中的每个i-th
元素,这很容易做到。现在,p
经常变化时会出现问题。在这种情况下,重新计算XORed
总和直到每个i-th
元素似乎都不是理想的解决方案。我想这可以使用fenwick tree
或BIT
来完成。但我无法弄清楚如何继续使用fenwick
树或BIT
。任何帮助,将不胜感激。
答案 0 :(得分:2)
我们可以独立解决每个位的问题。
假设我们想要计算第k
位对答案的贡献。如果它在p
中设置,则答案是范围内的元素数量,该位的值等于零(否则,对于此位等于1的元素,它是相同的)。
如何有效地计算这些元素的数量?我们可以为每个位构建一个前缀和数组。这样,我们在恒定时间内获得具有或不具有给定位的元素的数量。