AcWing 798. 差分矩阵
原题链接
简单
作者:
minux
,
2020-04-20 13:22:58
,
所有人可见
,
阅读 524
#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int n, m, q;
int a[N][N]; // 原始矩阵
int b[N][N]; // 差分矩阵
void inc(int x1, int y1, int x2, int y2, int c){
b[x1][y1]+=c;
b[x1][y2+1]-=c;
b[x2+1][y1]-=c;
b[x2+1][y2+1]+=c;
}
int main(){
memset(a, 0x00, sizeof a);
memset(b, 0x00, sizeof b);
cin>>n>>m>>q;
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j){
cin>>a[i][j];
inc(i, j, i, j, a[i][j]);
}
int x1, y1, x2, y2, c;
// inc操作
while(q--){
cin>>x1>>y1>>x2>>y2>>c;
inc(x1, y1, x2, y2, c);
}
// 输出
for(int i=1; i<=n; ++i){
for(int j=1; j<=m; ++j){
b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1];
cout<<b[i][j]<<" ";
}
cout<<endl;
}
return 0;
}