二维差分详解

前言
上一期我们分享了一维差分的使用方法,这一期我们将接着上期的内容带大家了解二位差分的使用方法,话不多说,LET’S GO!(上一期链接)
在这里插入图片描述

二维差分
二维差分我们可以用于对矩阵区间进行多次操作的题。
二维差分我们还可以采用一维差分的思想,如图假如我们要对区间[x1,x2],[y1,y2]的元素都+1:
在这里插入图片描述
即:

        arrsum[x1][y1] += 1;arrsum[x1][y2+1] -= 1;arrsum[x2+1	][y1] -= 1;arrsum[x2+1][y2+1] += 1;

思路就是这样,操作完之后直接求数组全缀合就是目标矩阵数组,下面我们上实战。
给出矩阵数组arr,共有n行m列,对其进行t次操作,每次操作会对[ x1 , x2 ],[ y1,y2 ]区间内的元素+1,请输出进行操作后的arr数组。
输入样例
第一行为n,m和q
往后n行为矩阵数组的元素
往后q行为x1,y1,x2,y2
测试样例
3 3 2
1 1 1
1 1 1
1 1 1
1 1 2 2
2 2 3 3
输出样例
2 2 1
2 3 2
1 2 2
题解:

#include<stdio.h>
int arr[100][100];
int arrsum[100][100];//前缀和数组
int main()
{int n, m, t;scanf("%d %d %d", &n, &m, &t);for (int i = 1; i <= n; i++)//输入数组{for (int j = 1; j <= m; j++){scanf("%d", &arr[i][j]);}}for (int i = 1; i <= n; i++)//操作arrsum数组使其前缀和为目标数组{for (int j = 1; j <= m; j++){arrsum[i][j] += arr[i][j];arrsum[i+1][j] -= arr[i][j];arrsum[i][j+1] -= arr[i][j];arrsum[i+1][j+1] += arr[i][j];}}while (t--)//t次操作{int x1, y1, x2, y2;scanf("%d %d %d %d", &x1, &y1, &x2, &y2);arrsum[x1][y1] += 1;arrsum[x1][y2+1] -= 1;arrsum[x2+1	][y1] -= 1;arrsum[x2+1][y2+1] += 1;}for (int i = 1; i <= n; i++)//求前缀和{for (int j = 1; j <= m; j++){arrsum[i][j] += arrsum[i-1][j]+arrsum[i][j-1]-arrsum[i-1][j-1];	}}for (int i = 1; i <= n; i++)//打印目标数组{for (int j = 1; j <= m; j++){printf("%d ", arrsum[i][j]);}printf("\n");}return 0;
}

尾声
本期分享就到这里,如果觉得博主讲的不错的话请给博主一个关注,点赞,收藏支持一下吧~,博主还将持续分享更多知识,我们下期再见!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring boot 实现直播聊天室

spring boot 实现直播聊天室 技术方案: spring bootwebsocketrabbitmq 使用 rabbitmq 提高系统吞吐量 引入依赖 <dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.42&…

Guardrails for Amazon Bedrock 基于具体使用案例与负责任 AI 政策实现定制式安全保障(预览版)

作为负责任的人工智能&#xff08;AI&#xff09;战略的一部分&#xff0c;您现在可以使用 Guardrails for Amazon Bedrock&#xff08;预览版&#xff09;&#xff0c;实施专为您的用例和负责任的人工智能政策而定制的保障措施&#xff0c;以此促进用户与生成式人工智能应用程…

LT8711HE方案《任天堂Switch底座方案》

LT8711HE Type-c转HDMI方案 LT8711HE是高性能的Type-C/DP1.2转HDMI2.0转换器&#xff0c;设计用于连接 USB Type-C 源或 DP1.2 源到 HDMI2.0 接收器。该LT8711HE集成了符合 DP1.2 标准的接收器和符合 HDMI2.0 标准的发射器。此外&#xff0c;两个 CC 控制器是包括用于 CC 通信以…

sizeof和strlen的对比

1.首先对sizeof和strlen有初步的认识 sizeof 是操作符 计算操作数所占内存的大小&#xff0c;单位是字节 strlen 是库函数&#xff0c;使用是要包含头文件string。h 计算字符串长度&#xff0c;统计\0之前的字符个数&#xff08;不包括\0&#xff09; #include<stdio…

题目:区间或 (蓝桥OJ 3691)

题目描述: 解题思路: 本题采用位运算.先求出全部数组每一位各自的前缀和,然后再判断区间内每一位区间和是否为0,不为0则乘上相应的2^n并将各个为的2^n相加,得ans. 实现原理图 题解: #include<bits/stdc.h> using namespace std;const int N 1e5 9;int a[N], prefix[35…

C语言——高精度加法

我们知道long long int类型的数据的最大数量级大概是10 ^ 18&#xff0c;这个数量级已经和大了是吧&#xff0c;但是实际上还有更大的数&#xff0c;例如10 ^ 100。 如果写一个加法程序&#xff0c;输入两个整数a、b&#xff0c;a、b的范围都在10 ^ 17内&#xff0c;那样可以选…

揭秘光耦合器继电器:了解技术奇迹

光耦合器继电器是现代电子产品的关键部件&#xff0c;在确保电路安全和效率方面发挥着关键作用。了解它们的功能和意义对于工程师和爱好者理解它们的应用至关重要。本文旨在揭开光耦合器继电器技术方面的神秘面纱&#xff0c;深入了解其功能、应用以及在电子领域的重要性。 什…

AD20-Excel创建IC类元件库

目录 准备模板AD操作 准备模板 AD操作 结果生成如下&#xff1a; over&#xff01;&#xff01;&#xff01;

IntelliJ IDEA 自带HTTP Client接口插件上传文件示例

如何使用IntelliJ IDEA自带的HTTP Client接口插件进行文件上传的示例。在这个示例中&#xff0c;我们将关注Controller代码、HTTP请求文件&#xff08;xxx.http&#xff09;&#xff0c;以及文件的上传和处理。 Controller代码 首先&#xff0c;让我们看一下处理文件上传的Co…

FreeRtos里的几个中断屏蔽

1、primask 寄存器 PRIMASK用于禁止除NMI和HardFalut外的所有异常和中断&#xff0c;使用方法&#xff1a; cpsid i &#xff1b; //设置primask &#xff08;禁止中断&#xff09; cpsie i ; //清除primask (使能中断) 也可以 movs r0,#1 msr primask r0; //将 1写入p…

软件测试经典面试题(答案解析+视频讲解)

前言 &#xff08;第一个就刷掉一大批人&#xff09; 有很多“会自动化”的同学来咨询技术问题&#xff0c;他总会问到我一些元素定位的问题。元素定位其实都不算自动化面试的问题。 一般我都会问&#xff1a;你是定位不到吗&#xff1f;通常结果都是说确实定位不到。 做自…

ChatGPT在指尖跳舞: open-interpreter实现本地数据采集、处理一条龙

原文&#xff1a;ChatGPT在指尖跳舞: open-interpreter实现本地数据采集、处理一条龙 - 知乎 目录 收起 Part1 前言 Part2 Open - Interpreter 简介 Part3 安装与运行 Part4 工作场景 1获取网页内容 2 pdf 文件批量转换 3 excel 文件合并 Part5总结 参考资料 往期推…