AcWing 798. 差分矩阵
原题链接
简单
作者:
Phil.
,
2023-12-12 11:00:06
,
所有人可见
,
阅读 39
import java.util.Scanner;
public class Main {
static int N = 1010;
static int n, m, q;
static int[][] b = new int[N][N];
static int[][] a = new int[N][N];
public static void insert(int x1,int y1,int x2,int y2,int c){
b[x1][y1] += c;
b[x2 + 1][y2 + 1] += c;
b[x1][y2 + 1] -= c;
b[x2 + 1][y1] -= c;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
q = sc.nextInt();
for (int i = 1; i <= n; i ++){
for (int j = 1 ; j <= m ; j ++){
a[i][j] = sc.nextInt();
insert(i,j,i,j, a[i][j]);
}
}
for(int i = 0 ; i < q ; i ++){
int x1 = sc.nextInt();
int y1 = sc.nextInt();
int x2 = sc.nextInt();
int y2 = sc.nextInt();
int c = sc.nextInt();
insert(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];
// a[i][j] = a[i-1][j] + a[i][j-1] - a[i-1][j-1] + b[i][j];
}
}
for(int i = 1 ; i <= n ; i++){
for (int j = 1 ; j<=m ; j ++){
// System.out.printf("%d ",b[i][j]);
// 用printf会超时,因为printf比print满
System.out.print(b[i][j] + " ");
}
System.out.println();
}
}
}