题解 | #【模板】二维前缀和#
【模板】二维前缀和
https://www.nowcoder.com/practice/99eb8040d116414ea3296467ce81cbbc
#include <iostream> using namespace std; const int N = 1010; long long a[N][N], s[N][N]; int main() { int n, m, q; cin >> n >> m >> q; for(int i = 1; i <= n; i ++) for(int j = 1; j <= m; j ++) cin >> a[i][j]; for(int i = 1; i <= n; i ++) for(int j = 1; j <= m; j ++) s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + a[i][j]; while(q --){ int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2; long long res = 0; res = s[x2][y2] - s[x1 - 1][y2] - s[x2][y1 - 1] + s[x1 - 1][y1 - 1]; cout << res << endl; } } // 64 位输出请用 printf("%lld")