#前缀和#
##1.一维前缀和##
对于数组A[],前缀和SUM[i]表示的就是A[1]+A[2]+…+A[i]。
int init() {
for(int i = 1; i <= n; i++) sum[i] = sum[i-1] + a[i];
}
int get(int l, int r) {
return sum[r] - sum[l-1];
}
##2.二维前缀和##
对于二维数组,前缀和SUM[i][k]表示的是所有A[i’][k’](1< = i’<=i,i <= k’<=k)的和。
int init() {
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
sum[i][j] = sum[i][j-1] + sum[i-1][j] - sum[i-1][j-1] + a[i][j];
}
}
}
int get(int x1, int y1, int x2, int y2) {
return sum[x1][y1] - sum[x1][y2 - 1] - sum[x2 - 1][y1] + sum[x2 - 1][y2 - 1];
}
##3.%k时的优化##
(p - q)% k= 0 ==> p % k = q % k
统计q % k 和 p