struct Fen {
    vector<vector<int>> t;
    int n;
    void init(int n) {
        this->n = n;
        t.assign(n + 1, vector<int>(n + 1, 0));
    }
    Fen() {}

    void change(int x, int y, int val) {
        for (int i = x; i <= n; i += i & -i) {
            for (int j = y; j <= n; j += j & -j) {
                t[i][j] += val;
            }
        }
    }

    int sum(int x, int y) {
        int res = 0;
        for (int i = x; i; i -= i & -i) {
            for (int j = y; j; j -= j & -j) {
                res += t[i][j];
            }
        }
        return res;
    }

    int sum(int x, int y, int u, int v) {
        return sum(u, v) - sum(u, y - 1) - sum(x - 1, v) + sum(x - 1, y - 1);
    }
};
void solve() {
    Fen t;
    while (1) {
        int o;
        cin >> o;
        if (o == 0) {
            int n;
            cin >> n;
            t.init(n);
        } else if (o == 1) {
            int x, y, v;
            cin >> x >> y >> v;
            t.change(x + 1, y + 1, v);
        } else if (o == 2) {
            int x, y, u, v;
            cin >> x >> y >> u >> v;
            cout << t.sum(x + 1, y + 1, u + 1, v + 1) << '\n';
        } else {
            return;
        }
    }
}

0 条评论

目前还没有评论...

信息

ID
432
时间
ms
内存
MiB
难度
5
标签
递交数
27
已通过
9
上传者