模板:一维 / 二维前缀和
一维:
void build() {
for (int i = 1; i <= n; ++i) s[i] = s[i - 1] + a[i];
}
int query(int l, int r) { return s[r] - s[l - 1]; }
二维:
void build() {
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
s[i][j] = s[i][j - 1] + s[i - 1][j] + s[i - 1][j - 1] + a[i][j];
}
}
}
int query(int x1, int y1, int x2, int y2) { return s[x2][y2] - s[x2][y1 - 1] - s[x1 - 1][y2] + s[x1 - 1][y1 - 1]; }

浙公网安备 33010602011771号