[差分]差分矩阵
二维差分
如果扩展到二维,我们需要让二维数组被选中的子矩阵中的每个元素的值加上c
,是否也可以达到O(1)
的时间复杂度。答案是可以的,考虑二维差分。a[][]
数组是b[][]
数组的前缀和数组,那么b[][]
是a[][]
的差分数组
原数组: a[i][j]
我们去构造差分数组: b[i][j]
使得a
数组中a[i][j]
是b
数组左上角(1,1)
到右下角(i,j)
所包围矩形元素的和。
798. 差分矩阵
输入一个 n
行 m
列的整数矩阵,再输入 q
个操作,每个操作包含五个整数 x1, y1, x2, y2, c
,其中 (x1, y1)
和 (x2, y2)
表示一个子矩阵的左上角坐标和右下角坐标。
每个操作都要将选中的子矩阵中的每个元素的值加上 c
。
请你将进行完所有操作后的矩阵输出。
输入格式
第一行包含整数 n,m,q
。
接下来 n
行,每行包含 m
个整数,表示整数矩阵。
接下来 q
行,每行包含 5
个整数 x1, y1, x2, y2, c
,表示一个操作。
输出格式
共 n
行,每行 m
个整数,表示所有操作进行完毕后的最终矩阵。
数据范围
1 ≤ n,m ≤ 1000
,1 ≤ q ≤ 100000
,1 ≤ x1 ≤ x2 ≤ n
,1 ≤ y1 ≤ y2 ≤ m
,-1000 ≤ c ≤ 1000
,-1000 ≤ 矩阵内元素的值 ≤ 1000
输入样例:
1 |
|
输出样例:
1 |
|
代码实现
1 |
|
感谢
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Phbeats-Blog!
评论