当前位置:网站首页>798. 差分矩阵
798. 差分矩阵
2022-08-05 11:46:00 【aJupyter】
Question
输入一个 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
输入样例:
3 4 3
1 2 2 1
3 2 2 1
1 1 1 1
1 1 2 2 1
1 3 2 3 2
3 1 3 4 1
输出样例:
2 3 4 1
4 3 4 1
2 2 2 2
Ideas
二维差分
Code
''' 二维差分,下标从1开始 初始化操作;(l1,r1),(l2,r2) 区间+c: def insert(l1,r1,l2,r2,v): b[l1][r1] += v b[l2+1][r1] -= v b[l1][r2+1] -= v b[l2+1][r2+1] += v '''
N = 1010
a = [[0]]
b = [[0 for i in range(N)] for j in range(N)]
n,m,q = list(map(int,input().strip().split()))
for i in range(n):
a.append([0]+list(map(int,input().strip().split())))
def insert(l1,r1,l2,r2,v):
b[l1][r1] += v
b[l2+1][r1] -= v
b[l1][r2+1] -= v
b[l2+1][r2+1] += v
# 初始化差分
for i in range(1,n+1):
for j in range(1,m+1):
insert(i,j,i,j,a[i][j])
# 区间加和
for i in range(q):
x1,y1,x2,y2,v = list(map(int,input().strip().split()))
insert(x1,y1,x2,y2,v)
# 求前缀和
for i in range(1,n+1):
for j in range(1,m+1):
b[i][j] = b[i-1][j] + b[i][j-1] - b[i-1][j-1] + b[i][j]
# 输出
for i in range(1,n+1):
for j in range(1,m+1):
print(b[i][j],end=' ')
print()
边栏推荐
猜你喜欢

Machine Learning - Ensemble Learning

巴比特 | 元宇宙每日必读:中国1775万件数字藏品分析报告显示,85%的已发行数藏开通了转赠功能...

Cesium.js 三维土壤地质剖面分割挖掘

Exploration and practice of transaction link under multi-service mode

分布式事务解决方案

Official release 2022 Nanjing Zhibo Expo is scheduled to be held in Xinzhuang National Exhibition in October

365天挑战LeetCode1000题——Day 050 在二叉树中增加一行 二叉树

JS 从零手写实现一个call、apply方法

SonarQube即将亮相第十八届GOPS全球运维大会

Go编译原理系列9(函数内联)
随机推荐
Cesium.js 三维土壤地质剖面分割挖掘
Apache APISIX Ingress v1.5-rc1 released
Linux:记一次CentOS7安装MySQL8(博客合集)
丹尼尔·拉瑞莫(BM):EOS的主要开发者
Student Information Management System (first time...)
Android development with Kotlin programming language three loop control
Android 开发用 Kotlin 编程语言 二 条件控制
Go 语言 strings 库常用方法
消息中间件汇总
前沿技术数字孪生如何应用在智慧城市上?
IPMP、PMP、CPMP三个证书该如何选择,有什么区别,哪个对于工作上的
一张图理解EOS是什么
【名词】什么是PV和UV?
力扣330 按要求补齐数组(贪心)
机器学习——集成学习
Go Quick Start Guide: Basic Types
2022 极术通讯-基于安谋科技 “星辰” STAR-MC1的灵动MM32F2570开发板深度评测
Http-Sumggling缓存漏洞分析
Discover the joy of C language
Three.js 点击模型,高亮发光模型外轮廓