题解 | 【模板】二维差分
【模板】二维差分
https://www.nowcoder.com/practice/50e1a93989df42efb0b1dec386fb4ccc
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
typedef long long ll;
ll n,m,q,a[N][N],d[N][N];
int main(){
cin>>n>>m>>q;
for(int i = 1;i<=n;i++){
for(int j = 1;j<=m;j++){
cin>>a[i][j];
}
}
while(q--){
int x1,y1,x2,y2,k;
cin>>x1>>y1>>x2>>y2>>k;
d[x1][y1]+=k;
d[x2+1][y1]-=k;
d[x1][y2+1]-=k;
d[x2+1][y2+1]+=k;
}
for(int i = 1;i<=n;i++){
for(int j = 1;j<=m;j++){
d[i][j] += d[i-1][j]+d[i][j-1]-d[i-1][j-1];
cout<<d[i][j]+a[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
查看10道真题和解析