水题,直接按二维前缀和定义写就行。

#include<bits/stdc++.h>
using i64 = long long;

int main() {
    std::cin.tie(nullptr)->sync_with_stdio(false);

    int n, m, q;
    std::cin >> n >> m >> q;

    std::vector pre(n + 1, std::vector<i64>(m + 1));
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            std::cin >> pre[i][j];
        }
    }

    for (auto &v : pre) {
        std::partial_sum(v.begin(), v.end(), v.begin());
    }
    for (int i = 0; i <= m; i++) {
        for (int j = 1; j <= n; j++) {
            pre[j][i] += pre[j - 1][i];
        }
    }

    while (q--) {
        int sx, sy, ex, ey;
        std::cin >> sx >> sy >> ex >> ey;

        std::cout << pre[ex][ey] - pre[ex][sy - 1] - pre[sx - 1][ey] + pre[sx - 1][sy - 1] << "\n";
    }

    return 0;
}

https://www.nowcoder.com/discuss/727521113110073344