模板:一维 / 二维前缀和

一维:

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]; }
posted @ 2026-10-11 23:18  zxqMATT  阅读(3)  评论(0)    收藏  举报