这是求一个一维数组的前缀和
如果我们要计算4-9这个区间的和我们就可以用prefix[9]-prefix[3]得到

vector<int>prefix(n)
for(int i=0;i<n;i++)
{
if(i)prefix[i]=prefix[i-1];
prefix[i]+=arr[i];
}

异或的性质 :

  1. 核心定义:相同为 0,不同为 1(从位的角度)
  2. 任何数和 0 异或,结果还是它自己
  3. A ^(B^C)=(A^B)^ C
  4. 自己异或自己 = 0
  5. A=B ^ C,两边^ C,A^ C=B
    求前缀异或
    vector<int>prefix(n)
    prefix[0]=arr[0]
    for(int i=1;i<n;i++)
    {
    prefix[i]^=prefix[i-1];
    }
    如果我们要计算4-9这个区间的异或我们就可以用prefix[9]^ prefix[3]

二维前缀和(在二维矩阵中求任意子矩阵的和)
14
比如12就代表的是左上角2 * 2区域的和
15