一维差分:
给定数组A,B。有B[1]=A[1],B[l]=A[l]-A[l-1].则称B数组为A数组的差分数组,同时A数组是B数组的前缀和数组。即前缀和与差分是互逆运算。
给A数组区间[l,r]每个数加上c,则其差分序列变化为B[l]加上c,B[r+1]减去c。
将原序列的区间操作转化为差分序列的单点操作进行计算,降低难度。
给区间[l, r]中的每个数加上c:B[l] += c, B[r + 1] -= c
二维差分:
二维差分的公式:a[i,j]为前缀和数组,p[i,j]为差分数组。
给以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵中的所有元素加上c:
B[x1, y1] += c, B[x2 + 1, y1] -= c, B[x1, y2 + 1] -= c, B[x2 + 1, y2 + 1] += c