#include <bits/stdc++.h> using namespace std; #define IOS ios::sync_with_stdio(false), cin.tie(0); typedef long long LL; //const int N=; int n, m, q; int x11, y11, x2, y2; int main() { IOS cin>>n>>m>>q; vector<vector<LL>> a(n+1, vector<LL>(m+1)), s(n+1, vector<LL>(m+1)); 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--){ cin>>x11>>y11>>x2>>y2; cout<<s[x2][y2]-s[x11-1][y2]-s[x2][y11-1]+s[x11-1][y11-1]<<"\n"; } return 0; }
二维前缀和的模板题,注意全局变量起名不要用y1
然后就是可以下标从1开始存,方便前缀和
最后输出即可