二维前缀和详解

什么是二维前缀和 ?

比如我们有这样一个矩阵a,如下所示:

1 2 4 3
5 1 2 4
6 3 5 9

我们定义一个矩阵sum,其中
sum_{x,y} = \sum\limits_{i=1}^x \sum\limits_{j=1}^y a_{i,j}
那么这个矩阵就是这样的:

1  3  7  10
6  9  15 22
12 18 29 45

建立在一维前缀和之上,我们要求一个矩阵内一个任意的子矩阵的数的和,我们就可以用二维前缀和,我们还是用DP来预处理,状态和一维前缀和差不多,只不过我们多加了一维,DP[i][j] 表示(1,1)这个点与(i,j)这个点两个点分别为左上角和右下角所组成的矩阵内的数的和,好好想一下状态转移方程:

DP[i][j]=DP[i-1][j]+DP[i][j-1]-DP[i-1][j-1]+map[i][j]

怎么来的呢?我们画一下图就知道了。
在这里插入图片描述
这张图就知道了 (i,j) 可以由 (i-1,j)(i,j-1) 两块构成,不过要注意两个点

1、有一块矩阵我们重复加了,也就是 (i-1,j-1) 这一块,所以我们要减去它

2、我们这个矩阵是不完整的,由图可知我们还有一块深蓝色的没有加,也就是 (i,j) 这一点,所以我们要再加上 map[i][j] 也就是题目给出的矩阵中这一格的数。

这样我们就预处理完了,现在讲一下怎么通过我们的预处理从而快速地得出我们想要的任意子矩阵中的和,我们定义 (x1,y1) 为我们想要子矩阵的左上角, (x2,y2) 为我们想要子矩阵的右下角,然后我们画图想一想。

在这里插入图片描述
我们可以通过 DP[x2][y2] 来计算,我们通过图可以发现这个距离我们要的还差红色的部分看看怎么表示红色部分?我们可以分割成两块,分别是 DP[x1][y2]DP[x2][y1] 我们发现有一块重复减了,所以我们再加上它即 DP[x1][y1]

有一点注意,因为画图和定义原因我们发现边界好像不对,我们来看看,我们定义的状态是整个矩阵包括边的和,而我们要求的也是要包括边的,所以我们要再改一下,把 DP[x1][y2]DP[x2][y1]DP[x1][y1] 分别改成 DP[x1-1][y2]DP[x2][y1-1]DP[x1-1][y1-1]

这样一减我们就可以得到自己想要的答案,整理可得公式,DP[x2][y2]-DP[x1-1][y2]-DP[x2][y1-1]+DP[x1-1][y1-1] 这样我们就可以做到 O(1) 之内查询,很奇妙吧,我们看一下实现代码:

#include<iostream>
#include<cstring>
using namespace std;
int dp[2000][2000],map[2000][2000];
int main()
{int m,n,k;//所给的矩阵是n*m的,有k组查询 cin >>n>>m>>k;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin >>map[i][j];memset(dp,0,sizeof(dp));for(int i=1;i<=n;i++)//预处理一波 for(int j=1;j<=m;j++)dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+map[i][j];for(int i=1;i<=k;i++)//接受查询 {int x1,x2,y1,y2;cin >>x1>>y1>>x2>>y2;cout <<(dp[x2][y2]+dp[x1-1][y1-1]-dp[x1-1][y2]-dp[x2][y1-1])<<endl;//O(1)查询 }return 0;
}

参考博文:https://blog.csdn.net/qq_34990731/article/details/82807870

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

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

相关文章

工业环境中对机器学习的行业视角

来源&#xff1a;ScienceAI编辑&#xff1a;凯霞Google Applied Science 是 Google Research 的一个部门&#xff0c;将计算方法&#xff0c;尤其是机器学习&#xff0c;应用于广泛的科学问题。不久前帕特里克莱利&#xff08;Patrick Riley&#xff09;还是该部门软件工程师之…

牛客16429 组合数问题(二维前缀和、杨辉三角)

链接&#xff1a;https://ac.nowcoder.com/acm/problem/16429 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld 题目描述 组合数表示的是从 n 个物品中选出 …

IPCC气候变暖最新报告:不要眼见,要“远见”

來源&#xff1a;简书作者&#xff1a;简晶链接&#xff1a;https://www.jianshu.com/p/015a29055b4a2021年8月9日IPCC发布报告&#xff0c;地球气候正在极速广泛地加剧变化&#xff0c;至少在目前的时间范围内部分趋势已经不可挽回。人类导致的气候变化已经极度影响了全球所有…

自监督学习:人工智能中的暗物质,来自Facebook AI Yann LeCun

来源&#xff1a;AI公园作者&#xff1a;Yann LeCun&#xff0c;Ishan Misra编译&#xff1a;ronghuaiyang近年来&#xff0c;人工智能领域在开发能够从大量精心标记的数据中学习的人工智能系统方面取得了巨大进展。这种监督学习的模式在训练专家模型时有着良好的记录&#xff…

动态代理之: com.sun.proxy.$Proxy0 cannot be cast to 问题

转&#xff1a; 动态代理之&#xff1a; com.sun.proxy.$Proxy0 cannot be cast to 问题 2018年05月13日 00:40:32 codingCoge 阅读数&#xff1a;1211 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/qq_38409944/article/…

牛客16596 计算系数(排列组合)

链接&#xff1a;https://ac.nowcoder.com/acm/problem/16596 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld 题目描述 给定一个多项式(axby)k&#xff0…

MIT新研究:过去80年,算法效率提升到底有多快?

来源&#xff1a;MIT&#xff0c;新智元编辑&#xff1a;David【导读】随着摩尔定律走向终结&#xff0c;靠提升计算机硬件性能可能越发难以满足海量计算的需要&#xff0c;未来的解决之道在于提升算法的效率。MIT的这篇新论文总结了过去80年来&#xff0c;算法效率的提升究竟有…

AI 被当做炒作工具?

来源&#xff1a;AI科技大本营&#xff08;ID:rgznai100&#xff09;翻译&#xff1a;AI科技大本营编译&#xff1a;禾木木上班路上由于高峰期&#xff0c;眼看就要迟到了&#xff0c;这个时候会想“如果汽车能自动完成这种高度重复的动作&#xff0c;我就可以在路上参加我的会…

第五周助教心得体会

本周心得: 本周为我参加助教工作的第五周。本周同学们要搞定的内容&#xff1a; 作业链接 fork词频统计仓库&#xff0c;创建修改分支对代码进行效能分析&#xff0c;改进后提交将过程写入博客并发布&#xff08;提交42人 未提交31人 作业平均成绩&#xff1a;6.7分&#xff0c…

牛客16732 序列(排列组合)

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; 链接&#xff1a;https://ac.nowcoder.com/acm/problem/16732 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语…

什么是传感器融合?我们从“盲人摸象”讲起……

来源&#xff1a;传感器专家网今天&#xff0c;我们的生活高度依赖传感器。传感器作为人类“五感”的延伸&#xff0c;去感知这个世界&#xff0c;甚至可以观察到我们人体感知不到的细节&#xff0c;这种能力也是未来智能化社会所必须的。不过&#xff0c;单个传感器的性能再卓…

算法竞赛入门经典 例题6-2 铁轨(C、python)

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; 问题描述&#xff1a; 某城市有一个火车站&#xff0c;铁轨铺设如图所示。有n节车厢从A方向驶入车站&#xff0c;按进站顺序编号为 1~n 。你的任务是判断是否能让它们按照某种特定的顺序进入 B 方…

redis集群的搭建详细教程

1 Redis-cluster架构图 redis-cluster投票:容错 &#xff08;至少要三个才可以&#xff0c;才能超过半数&#xff09; 架构细节: (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群中超过半数的节点检测失效时才生效…

王飞跃 | 面向未来的AI人才应该具备这3种思维

来源&#xff1a;湛庐阅读作者&#xff1a;王飞跃 苇草智酷学术委员、中科院自动化研究所复杂系统与智能科学重点实验室主任、中国科学院社会计算与平行系统研究中心主任当今最好的人工智能程序到底有多智能&#xff1f;它们是如何工作的&#xff1f;能做些什么&#xff1f;我…

Java安全API

java提供了完整的密码学API,我们可以结合密码学相关的概念来系统的学习这些API。 1.密码学简介(crypto) 密码学通俗来说就是研究如何对信息进行加密和破密&#xff0c;如果不是专门研究信息安全&#xff0c;通常我们只需学习和使用加密的方法&#xff0c;所以破密的相关知识我们…

算法竞赛入门经典 例题6-6 小球下落(python、C)

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; 问题描述&#xff1a; 有一颗二叉树&#xff0c;最大深度为D&#xff0c;且所有叶子的深度都相同。所有结点从上到下从左到右编号为 1&#xff0c;2&#xff0c;3&#xff0c;… &#xff0c;2D -…

NLPer,是时候重视因果推理了!这有一份杨笛一等撰写的综述

来源&#xff1a;机器之心编辑&#xff1a;张倩在这篇综述论文中&#xff0c;来自佐治亚理工学院的杨笛一等十几位研究者系统阐述了自然语言处理中的因果推理。科学研究的一个基本目标是了解因果关系。然而&#xff0c;尽管因果在生活和社会科学中扮演了重要角色&#xff0c;它…

【报告】2021物联网行业研究报告(附PDF下载)

来源&#xff1a;兴业证券编辑&#xff1a;Zero导语物联网通过智能感知、识别技术与普适计算等通信感知技术&#xff0c;广泛应用于网络的融合中&#xff0c;也因此被称为继计算机、互联网 之后世界信息产业发展的第三次浪潮。1、云管端的硬件升级云、管、端革新带动物联网爆发…

pyecharts 绘制地图

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; # 导入相关包 from pyecharts import options as opts from pyecharts.charts import Map, Geo, Lindata pd.read_csv(rC:\Users\1979\Desktop\处理后的数据\谷物产量&#xff08;公吨&#xff0…

斯坦福大学报告称中国AI论文引用率首超美国!但李国杰院士也发文灵魂拷问...

来源&#xff1a;zhihu中国霸榜AI期刊论文发表&#xff0c;论文引用量「首超」美国&#xff01;然而&#xff0c;中国工程院院士李国杰却戳着国内AI研究的脊梁骨说「顶不了天、落不了地」。近日&#xff0c;如何看待「李国杰院士发文称国内 AI 研究顶不了天、落不了地」这一话题…