前缀和有两个关键操作:
一维前缀和:s[i]=s[i-1]+a[i]; 求l到r的前缀和:s[l]-s[r-1];
二维矩阵前缀和:s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j]; 求x1y1(左上角)到x2y2(右上角)的矩阵的和:s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1];
差分有一个关键操作:
差分数组就是给定一个数组a[i],构造这个数组的前缀和数组b[i];eg:a[i]=b[1]+b[2]+...+b[i]
一维差分数组:b[l]+=c;b[r+1]-=c;
二维矩阵差分数组:b[x1][y1]+=c;b[x1][y2+1]-=c;b[x2+1][y1]-=c;b[x2+1][y2+1]+=c;