题解 | 【模板】二维前缀和
【模板】二维前缀和
https://www.nowcoder.com/practice/99eb8040d116414ea3296467ce81cbbc
#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开始存,方便前缀和
最后输出即可
上海得物信息集团有限公司公司福利 1163人发布