主要的做用是能够快速的求出数组中任意一段区间的和数组
S[i] = a[1] + a[2] + ... a[i]//S是前缀和数组,下边从1开始,方便边界的计算 a[l] + ... + a[r] = S[r] - S[l - 1]
相似于一维前缀和,主要是为了快速求出二维数组中人任意上下对角构成的区域数字之和code
S[i, j] = 第i行j列格子左上部分全部元素的和 以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵的和为: S[x2, y2] - S[x1 - 1, y2] - S[x2, y1 - 1] + S[x1 - 1, y1 - 1]
主要是快速给一个区间中的全部的数加上一个数get
给区间[l, r]中的每一个数加上c:B[l] += c, B[r + 1] -= c
同上述一维差分相似(一维变二维)二维数组
给以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵中的全部元素加上c: S[x1, y1] += c, S[x2 + 1, y1] -= c, S[x1, y2 + 1] -= c, S[x2 + 1, y2 + 1] += c