差分
1.定义:
一维:原数组a与差分数组b,a是b的前缀和。a[i]=b1+b2+b3..+bi;
二维:原数组a[i, j], 差分数组b[i, j]。a是b的前缀和。
2.作用:
用o(1)时间给原数组某一部分加上一个值
3.构造
将原数组重新插入一遍
add(i, i, c), add(i, j, i, j, c)
4.注意
下标从一开始
5.步骤
构造差分数组->加c->求差分数组的前缀和,得到加完后的a数组
6.模板
一维:b[l]+=c,b[r+1]-=c;
二维:b[x1, y1]+=c, b[x2+1, y1]-=c, b[x1, y2+1]+=c, b[x2+1, y2+1]+=c;
位运算
1.n>>k&1 得到n的二进制表示第k位是几,解释请看群视频
2.lowbit(x)=x&-x.得到n的最后一位一, 解释同上。