集合帖:前缀和及差分模板题 ← 一维及二维

【一维前缀和及一维差分知识点】
● 一维“前缀和数组”预处理过程:cin>>a[i], sum[i]=sum[i-1]+a[i]  或者  cin>>sum[i], sum[i]+=sum[i-1]   (1≤i≤n)
● 一维“区间和”计算过程:sum[y]-sum[x-1]      (y≥x)
● 长度为 k 的区间和的公式为:sum[i]-sum[i-k]
● 一维区间操作转端点操作 d[le]+=x,d[ri+1]-=x,可以高效地对区间 [le,ri] 内的每个元素都 +x。

(一)一维前缀和
题目来源:
https://www.acwing.com/problem/content/797/
代码来源:https://blog.csdn.net/hnjzsyjyj/article/details/144885387

#include <bits/stdc++.h>
using namespace std;const int maxn=1e5+5;
int a[maxn],s[maxn];int main() {int n,m;scanf("%d%d",&n,&m);for(int i=1; i<=n; i++) {scanf("%d",&a[i]);s[i]=s[i-1]+a[i];}while(m--) {int le,ri;scanf("%d%d",&le,&ri);printf("%d\n",s[ri]-s[le-1]);}return 0;
}/*
in:
5 3
2 1 3 6 4
1 2
1 3
2 4out:
3
6
10
*/

(二)一维差分
题目来源:https://www.acwing.com/problem/content/799/
代码来源:https://blog.csdn.net/hnjzsyjyj/article/details/139963345

#include <bits/stdc++.h>
using namespace std;const int N=1e5+5;
int a[N]; //Primitive array
int d[N]; //Difference arrayint main() {int n,m;cin>>n>>m;for(int i=1; i<=n; i++) { //i from 1cin>>a[i];d[i]=a[i]-a[i-1]; //Building a difference array}int le,ri,c;while(m--) {cin>>le>>ri>>c;d[le]+=c;d[ri+1]-=c;}for(int i=1; i<=n; i++) { //i from 1a[i]=d[i]+a[i-1];cout<<a[i]<<" ";}return 0;
}/*
in:
6 3
1 2 2 1 2 1
1 3 1
3 5 1
1 6 1out:
3 4 5 3 4 2
*/

【二维前缀和及二维差分知识点】
● 二维“前缀和数组”预处理过程:sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j]
● 二维“区间和”计算过程:( sum[x2][y2] - sum[x2][y1-1] ) - ( sum[x1-1][y2] - sum[x1-1][y1-1] ) = sum[x2][y2] - sum[x2][y1-1] - sum[x1-1][y2] + sum[x1-1][y1-1]       (y2≥y1,x2≥x1)
● 二维区间操作转端点操作
若二维区域的左上角坐标为 (x1, y1),右下角坐标为 (x2, y2),则如下代码可高效实现对此二维区域内所有元素 +x 的操作。

d[x1][y1]+=x;
d[x1][y2+1]-=x;
d[x2+1][y1]-=x;
d[x2+1][y2+1]+=x;


(一)二维前缀和
题目来源:
https://www.acwing.com/problem/content/798/
代码来源:https://blog.csdn.net/hnjzsyjyj/article/details/144908502

#include <bits/stdc++.h>
using namespace std;const int maxn=1e3+5;
int a[maxn][maxn];
int s[maxn][maxn];int main() {int n,m,q;cin>>n>>m>>q;for(int i=1; i<=n; i++)for(int j=1; j<=m; j++) {scanf("%d",&a[i][j]);s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1]+a[i][j];}while(q--) {int x1,y1,x2,y2;scanf("%d%d%d%d",&x1,&y1,&x2,&y2);printf("%d\n",s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1]);}return 0;
}/*
in:
3 4 3
1 7 2 4
3 6 2 8
2 1 2 3
1 1 2 2
2 1 3 4
1 3 3 4out:
17
27
21
*/

(二)二维差分
题目来源:
https://www.acwing.com/problem/content/800/
代码来源:https://blog.csdn.net/hnjzsyjyj/article/details/139970246

#include <bits/stdc++.h>
using namespace std;const int maxn=1e3+5;
int a[maxn][maxn];
int d[maxn][maxn];
int n,m,q;int main() {cin>>n>>m>>q;for(int i=1; i<=n; i++) {for(int j=1; j<=m; j++) {cin>>a[i][j];}}for(int i=1; i<=n; i++) {for(int j=1; j<=m; j++) {d[i][j]=a[i][j]-a[i-1][j]-a[i][j-1]+a[i-1][j-1];}}while(q--) {int x1,y1,x2,y2,c;cin>>x1>>y1>>x2>>y2>>c;d[x1][y1]+=c;d[x1][y2+1]-=c;d[x2+1][y1]-=c;d[x2+1][y2+1]+=c;}for(int i=1; i<=n; i++) {for(int j=1; j<=m; j++) {a[i][j]=d[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];}}for(int i=1; i<=n; i++) {for(int j=1; j<=m; j++) cout<<a[i][j]<<" ";cout<<endl;}return 0;
}/*
in:
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 1out:
2 3 4 1
4 3 4 1
2 2 2 2
*/



【一维前缀和及一维差分示例】  <--  洛谷 P5638:光骓者的荣耀
题目来源:https://www.luogu.com.cn/problem/P5638
代码来源:https://blog.csdn.net/hnjzsyjyj/article/details/145251582

#include <bits/stdc++.h>
using namespace std;typedef long long LL;
const int maxn=1e6+5;
LL s[maxn],d[maxn];
LL t;
int n,k;int main() {cin>>n>>k;for(int i=1; i<n; i++) {cin>>s[i];s[i]+=s[i-1];}for(int i=1; i<=n-k; i++) {t=max(t,s[i+k-1]-s[i-1]);}cout<<s[n-1]-t<<endl;return 0;
}/*
in:
4 1
1 2 3out:
3
*/

【二维前缀和及二维差分示例】  <--  洛谷 P3397:地毯
题目来源:https://www.luogu.com.cn/problem/P3397
代码来源:
https://blog.csdn.net/hnjzsyjyj/article/details/145268744

#include <bits/stdc++.h>
using namespace std;const int maxn=1e3+5;
int a[maxn][maxn];
int d[maxn][maxn];
int n,m;int main() {cin>>n>>m;while(m--) {int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;for(int i=x1; i<=x2; i++) {d[i][y1]++;d[i][y2+1]--;}}for(int i=1; i<=n; i++) {for(int j=1; j<=n; j++) {a[i][j]=a[i][j-1]+d[i][j];cout<<a[i][j]<<" ";}cout<<endl;}return 0;
}/*
in:
5 3
2 2 3 3
3 3 5 5
1 2 1 4out:
0 1 1 1 0
0 1 1 0 0
0 1 2 1 1
0 0 1 1 1
0 0 1 1 1
*/




【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/145251582
https://blog.csdn.net/hnjzsyjyj/article/details/145268744

 

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

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

相关文章

《offer 来了:Java 面试核心知识点精讲 -- 框架篇》(附资源)

继上篇文章介绍了《offer 来了&#xff1a;Java 面试核心知识点精讲 -- 原理篇》书后&#xff0c;本文章再给大家推荐兄弟篇 《offer来了&#xff1a;Java面试核心知识点精讲--框架篇》&#xff0c; 简直就是为Java开发者量身定制的面试神器。 本书是对Java程序员面试中常见的…

Low-Level 大一统:如何使用Diffusion Models完成视频超分、去雨、去雾、降噪等所有Low-Level 任务?

Diffusion Models专栏文章汇总:入门与实战 前言:视频在传输过程中常常因为各种因素(如恶劣天气、噪声、压缩和传感器分辨率限制)而出现质量下降,这会严重影响计算机视觉任务(如目标检测和视频监控)的性能。现有的视频修复方法虽然取得了一些进展,但通常只能针对特定的退…

Video-RAG:一种将视频RAG新框架

1. 摘要及主要贡献点 摘要&#xff1a; 检索增强生成&#xff08;RAG&#xff09;是一种强大的策略&#xff0c;通过检索与查询相关的外部知识并将其整合到生成过程中&#xff0c;以解决基础模型生成事实性错误输出的问题。然而&#xff0c;现有的RAG方法主要集中于文本信息&…

Docker Load后存储的镜像及更改镜像存储目录的方法

Docker Load后存储的镜像及更改镜像存储目录的方法 Docker Load后存储的镜像更改镜像存储目录的方法脚本说明注意事项Docker作为一种开源的应用容器引擎,已经广泛应用于软件开发、测试和生产环境中。通过Docker,开发者可以将应用打包成镜像,轻松地进行分发和运行。而在某些场…

Amazon MSK 开启 Public 访问 SASL 配置的方法

1. 开启 MSK Public 1.1 配置 MSK 参数 进入 MSK 控制台页面&#xff0c;点击左侧菜单 Cluster configuration。选择已有配置&#xff0c;或者创建新配置。在配置中添加参数 allow.everyone.if.no.acl.foundfalse修改集群配置&#xff0c;选择到新添加的配置。 1.2 开启 Pu…

Windows FileZila Server共享电脑文件夹 映射21端口外网连接

我有这样一个使用场景&#xff0c;在外部网络环境下&#xff0c;通过手机便捷地读取存储在电脑上的视频文件。比如在外出旅行、出差&#xff0c;身边没有携带电脑&#xff0c;仅依靠手机设备&#xff0c;就能随时获取电脑里存储的各类视频&#xff0c;无论是学习资料视频、工作…

MySQL 实战 4 种将数据同步到ES方案

文章目录 1. 前言2. 数据同步方案 2.1 同步双写2.2 异步双写2.3 定时更新2.4 基于 Binlog 实时同步 3. 数据迁移工具选型 3.1 Canal3.2 阿里云 DTS3.3 Databus3.4 Databus和Canal对比3.4 其它 4. 后记 上周听到公司新同事分享 MySQL 同步数据到 ES 的方案&#xff0c;发现很有…

虚幻基础-1:cpu挑选(14600kf)

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 ue非常吃cpu拉满主频打开项目编写蓝图运行原因 时间长 关于压力测试 本文以14600kf为例&#xff0c;双12购入&#xff0c;7月份产。 ue非常吃cpu 经本人测试&#xff0c;ue是非常吃cpu的。 拉满主频 无论任何时间…

QTableWidget的简单使用

1.最简单的表格示例&#xff1a; ui->tableWidget->setRowCount(2);// 设置行数ui->tableWidget->setColumnCount(3);// 设置列数&#xff0c;一定要放在设置行表头之前QStringList rowHeaderList;// 行表头rowHeaderList << QStringLiteral("姓名"…

深入探究分布式日志系统 Graylog:架构、部署与优化

文章目录 一、Graylog简介二、Graylog原理架构三、日志系统对比四、Graylog部署传统部署MongoDB部署OS或者ES部署Garylog部署容器化部署 五、配置详情六、优化网络和 REST APIMongoDB 七、升级八、监控九、常见问题及处理 一、Graylog简介 Graylog是一个简单易用、功能较全面的…

2024年我的技术成长之路

2024年我的技术成长之路 大家好&#xff0c;我是小寒。又到年底了&#xff0c;一年过得真快啊&#xff01;趁着这次活动的机会&#xff0c;和大家聊聊我这一年在技术上的收获和踩过的坑。 说实话&#xff0c;今年工作特别忙&#xff0c;写博客的时间比去年少了不少。不过还是…

嵌入式硬件篇---基本组合逻辑电路

文章目录 前言基本逻辑门电路1.与门&#xff08;AND Gate&#xff09;2.或门&#xff08;OR Gate&#xff09;3.非门&#xff08;NOT Gate&#xff09;4.与非门&#xff08;NAND Gate&#xff09;5.或非门&#xff08;NOR Gate&#xff09;6.异或门&#xff08;XOR Gate&#x…

数据库管理-第285期 Oracle 23ai:深入浅出向量索引(20250117)

数据库管理285期 20245-01-17 数据库管理-第285期 Oracle 23ai&#xff1a;深入浅出向量索引&#xff08;20250117&#xff09;1 HNSW事务支持解读 2 IVF分区支持解读 3 混合向量索引何时选择混合向量索引为何选择混合向量索引 总结 数据库管理-第285期 Oracle 23ai&#xff1a…

行人识别检测数据集,yolo格式,PASICAL VOC XML,COCO JSON,darknet等格式的标注都支持,准确识别率可达99.5%

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…

【Spring】原型 Bean 被固定

问题描述 在定义 Bean 时&#xff0c;有时候我们会使用原型 Bean&#xff0c;例如定义如下&#xff1a; Service Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class ServiceImpl { }然后我们按照下面的方式去使用它&#xff1a; RestController public class Hello…

2024年美赛C题评委文章及O奖论文解读 | AI工具如何影响数学建模?从评委和O奖论文出发-O奖论文做对了什么?

模型假设仅仅是简单陈述吗&#xff1f;允许AI的使用是否降低了比赛难度&#xff1f;还在依赖机器学习的模型吗&#xff1f;处理题目的方法有哪些&#xff1f;O奖论文的优点在哪里&#xff1f; 本文调研了当年赛题的评委文章和O奖论文&#xff0c;这些问题都会在文章中一一解答…

PyTorch框架——基于深度学习YOLOv8神经网络学生课堂行为检测识别系统

基于YOLOv8深度学习的学生课堂行为检测识别系统&#xff0c;其能识别三种学生课堂行为&#xff1a;names: [举手, 读书, 写字] 具体图片见如下&#xff1a; 第一步&#xff1a;YOLOv8介绍 YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本…

kafka学习笔记6 ACL权限 —— 筑梦之路

在Kafka中&#xff0c;ACL&#xff08;Access Control List&#xff09;是用来控制谁可以访问Kafka资源&#xff08;如主题、消费者组等&#xff09;的权限机制。ACL配置基于Kafka的kafka-acls.sh工具&#xff0c;能够管理对资源的读取、写入等操作权限。 ACL介绍 Kafka的ACL是…

领域算法 - 负载均衡算法

负载均衡算法 文章目录 负载均衡算法一&#xff1a;常规负载均衡算法二&#xff1a;Nginx负载均衡算法 一&#xff1a;常规负载均衡算法 二&#xff1a;Nginx负载均衡算法 # 定义负载均衡设备的Ip及设备状态 upstream bakend {ip_hash; server 127.0.0.1:9090 down; server…

【Unity3D】3D物体摆放、场景优化案例Demo

目录 PlaceManager.cs(放置管理类) Ground.cs(地板类) 和 GroundData.cs(地板数据类) 额外知识点说明 1、MeshFilter和MeshRenderer的Bounds区别 2、Gizmos 绘制一个平行于斜面的立方体 通过网盘分享的文件&#xff1a;PlaceGameDemo2.unitypackage 链接: https://pan.baid…