前缀和
这是求一个一维数组的前缀和
如果我们要计算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];
}
异或的性质 :
- 核心定义:相同为 0,不同为 1(从位的角度)
- 任何数和 0 异或,结果还是它自己
- A ^(B^C)=(A^B)^ C
- 自己异或自己 = 0
- A=B ^ C,两边^ C,A^ C=B
求前缀异或如果我们要计算4-9这个区间的异或我们就可以用prefix[9]^ prefix[3]vector<int>prefix(n)
prefix[0]=arr[0]
for(int i=1;i<n;i++)
{
prefix[i]^=prefix[i-1];
}
二维前缀和(在二维矩阵中求任意子矩阵的和)
比如12就代表的是左上角2 * 2区域的和
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Zedward'Blog!
评论
