C++ 二维差分 二维前缀和逆运算 差分矩阵

news2025/1/11 20:56:43

输入一个 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

在这里插入图片描述
需要注意的是,更新的方式。根据图会更容易理解和记住。

#include <iostream>

using namespace std;

const int N = 1010;
int n, m, q;
int a[N][N], b[N][N];

int main ()
{
    scanf("%d%d%d", &n, &m, &q);
    for(int i = 1; i <= n; i ++ )
        for(int j = 1; j <= m; j ++ )
            scanf("%d", &a[i][j]);
            
    for(int i = 1; i <= n; i ++ )
        for(int j = 1; j <= m; j ++ ) // 初始化差分矩阵,相当于把原始矩阵a的每个元素插进去
        {
            b[i][j] += a[i][j];
            b[i + 1][j] -= a[i][j];
            b[i][j + 1] -= a[i][j];
            b[i + 1][j + 1] += a[i][j];
        }
    
    while(q -- ) // 插入操作
    {
        int x1, y1, x2, y2, c;
        scanf("%d%d%d%d%d", &x1, &y1, &x2, &y2, &c);
        b[x1][y1] += c;
        b[x2 + 1][y1] -= c;
        b[x1][y2 + 1] -= c;
        b[x2 + 1][y2 + 1] += 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];
    
    for(int i = 1; i <= n; i ++ )
    {
        for(int j = 1; j <= m; j ++ )
            printf("%d ", b[i][j]);
        printf("\n");
    }
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1459737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mfc140u.dll文丢失导致应用程序无法正常,有哪些解决办法

mfc140u.dll是Microsoft Foundation Classes&#xff08;MFC&#xff09;的一个重要组件&#xff0c;它提供了许多用于开发Windows应用程序的功能和工具。然而&#xff0c;当系统或应用程序升级、恶意软件感染或文件损坏以及用户错误操作等情况发生时&#xff0c;mfc140u.dll文…

力扣238和169

一&#xff1a;238. 除自身以外数组的乘积 1.1题目 1.2思路 1.3代码 //左右乘表 int* productExceptSelf(int* nums, int numsSize, int* returnSize) {int* answer (int*)malloc(numsSize*sizeof(int));int i 0;int left[numsSize],right[numsSize];left[0] 1;for(i 1;…

打码半年,开源一款自定义大屏设计软件!

hi&#xff0c;大家好&#xff0c;我是Tduck马马。 最近我们开源了一款大屏软件-TReport&#xff0c;与大家分享。 TReport是一款基于Vue3技术栈的数据可视化系统&#xff0c;支持静态、动态api等数据源&#xff1b;可用于数据可视化分析、报表分析、海报设计使用。 提供自定…

☀️将大华摄像头画面接入Unity 【1】配置硬件和初始化摄像头

一、硬件准备 目前的设想是后期采用网口供电的形式把画面传出来&#xff0c;所以这边我除了大华摄像头还准备了POE供电交换机&#xff0c;为了方便索性都用大华的了&#xff0c;然后全都连接电脑主机即可。 二、软件准备 这边初始化摄像头需要用到大华的Configtool软件&#…

哈希(哈希散列数据结构)---底层原理

Day02: 1.哈希散列数据结构&#xff1a;底层实现就是&#xff1a;数组链表&#xff08;红黑树&#xff09; map的put方法和get方法。 2.数组方法和链表存取数据的区别 数组方法&#xff1a;法随机访问快 链表&#xff1a;增删改效率快。 3.哈希结合了链表和数组的特性。 …

Sora后观察:AI大模型产业落地的八个锚点

在正在进行的2024年&#xff0c;国内大模型也将更下沉和落地&#xff0c;在技术上的突破之外&#xff0c;也会出现更多的向下的产业兼容和产业实践案例&#xff0c;作为新质生产力推动产业数字化转型的航船加速前进。 作者|斗斗 编辑|皮爷 出品|产业家 “电影讲述了一名…

关于深度学习和大模型的基础认知

这年头&#xff0c;作为一个技术人&#xff0c;话头里没有“大模型”&#xff0c;和人聊天都聊不下去。为了让自己和大家能更好的参与话头&#xff0c;特撰写此文&#xff0c;提供一些对大模型的基础认知能力&#xff08;门外汉&#xff0c;浅尝辄止&#xff09;。旨在解自己的…

音乐与步伐同行:南卡、韶音和墨觉的骨传导耳机深度评测

在快节奏的现代生活中&#xff0c;音乐成为了许多人精神慰藉的方式之一。特别是对于那些热爱运动的人来说&#xff0c;音乐不仅是他们运动过程中的最佳伴侣&#xff0c;更是激发潜力&#xff0c;突破极限的源动力。但是在运动的过程中如何享受到最佳的音乐体验呢&#xff1f;这…

【wu-lazy-cloud-network】Java自动化内网穿透架构整理

项目介绍 wu-lazy-cloud-network 是一款基于&#xff08;wu-framework-parent&#xff09;孵化出的项目&#xff0c;内部使用Lazy ORM操作数据库&#xff0c;主要功能是网络穿透&#xff0c;对于没有公网IP的服务进行公网IP映射 使用环境JDK17 Spring Boot 3.0.2 版本更新 1…

【快速搞定Webpack4】介绍及基本使用(一)

webpack 是一个静态资源打包工具。 他会以一个或多个文件作为打包的入口&#xff0c;将我们整个项目所有文件编译组合成一个或多个文件输出出去。 输出的文件就是编译好的文件&#xff0c;就可以在浏览器端运行了。 我们将 webpack 输出的文件叫做 bundle 。 (将浏览器不识别的…

第十三章[管理]:13.3:pycharm的常用设置

一,pycharm配置注释模板 1,打开配置界面: pycharm->preference 英文:Editor->File and Code Templates->Python Script 中文:编辑器->文件和代码模板->Python Script 如图: 我们输入的内容: # @Project : ${PROJECT_NAME} # @File : ${NAME}.py # @Author …

notepad++的下载与使用

1.进入官网下载 https://notepad-plus-plus.org/ 点击下载即可 2.选择中文简体 3.建议安装在D盘 其余步骤按照指示就行 4.安装后这几个是必选的 设置完成后就可以写中文了 以此为例 结果为

HarmonyOS(二十)——管理应用拥有的状态之LocalStorage(页面级UI状态存储)

LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility实例内&#xff0c;在页面间共享状态。 本文仅介绍LocalStorage使用场景和相关的装饰器&#xff1a;LocalStorageProp和LocalS…

k8s除了可以直接运行docker镜像之外,还可以运行什么? springboot项目打包成的压缩包可以直接运行在docker容器中吗?

Kubernetes&#xff08;k8s&#xff09;主要设计用于自动部署、扩展和管理容器化应用程序。虽然它与Docker容器最为密切相关&#xff0c;Kubernetes实际上是与容器运行时技术无关的&#xff0c;这意味着它不仅仅能够管理Docker容器。Kubernetes支持多种容器运行时&#xff0c;包…

ELK入门(一)-Elasticsearch(docker版)

Elasticsearch Elasticsearch安装(docker) 下载Elasticsearch 查询镜像 [rootlocalhost elk]# docker search elasticsearch NAME DESCRIPTION STARS OFFICIAL AUTOMATED elasticsearch …

Flutter学习1 - Android开发者快速上手

1、对应关系 概念对应关系 AndroidFlutter页面Activity和FragmentWidget视图ViewWidget页面跳转IntentNavigater网络库okHttphttp数据存储SharedPreference和SQLiteshared_preferences和sqflite 布局对应关系 AndroidFlutter布局文件xmlWidget线性布局LinearLayoutRow和Col…

SAP PP学习笔记 - 豆知识06 - 如何使用分类系统查找品目

PP模块&#xff0c;之前学习PP模块主数据的时候&#xff0c;其中一个主数据叫分类系统&#xff08;Classification View&#xff09;。 它的用处是定义一些SAP没提供的特殊字段&#xff0c;以做查询&#xff0c;分析用。 有关分类系统的详细&#xff0c;可以参照如下文章。 …

Oracle 如何提高空间使用率?

一&#xff0c;行迁移和行链接。 oracle尽量保证一行的数据能够放在同一个数据块当中&#xff0c;有的时候行会发生行迁移和行链接。 行链接 &#xff1a;有一个列的字段是大对象&#xff08;long&#xff0c;longlong&#xff09;一行占的数据一整个块都放不下&#xff0c;则…

如何在Excel中冻结行或列标题?这里提供两种方法

随着数据的增长&#xff0c;许多Excel工作表可能会变得很大&#xff0c;因此冻结行和列标题或冻结窗格非常有用&#xff0c;以便在滚动工作表时将标题锁定到位。在Excel中&#xff0c;可以冻结行标题和列标题&#xff0c;也可以只冻结一个。这不会影响将要打印的单元格。列标题…

力扣精选算法100道——提莫攻击(模拟专题)

目录 &#x1f6a9;题目解析 &#x1f6a9;算法原理 &#x1f6a9;实现代码 &#x1f6a9;题目解析 输入&#xff1a;timeSeries [1,4], duration 2 输出&#xff1a;4 解释&#xff1a;提莫攻击对艾希的影响如下&#xff1a; - 第 1 秒&#xff0c;提莫攻击艾希并使其立即…