【编程笔记】差分·差分矩阵
差分,即前缀和的逆运算,两者之间的关系类似于数学中的求导和积分的关系。差分(一维差分)输入一个长度为n的整数序列。接下来输入m个操作,
差分,即前缀和的逆运算,两者之间的关系类似于数学中的求导和积分的关系。
差分(一维差分)
输入一个长度为 n 的整数序列。
(资料图片)
接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。
输出进行完所有操作后的序列。
输入格式
第一行包含两个整数 n 和 m。
第二行包含 n 个整数,表示整数序列。
接下来 m 行,每行包含三个整数 l,r,c,表示一个操作。
输出格式
共一行,包含 n 个整数,表示最终序列。
差分思路
现有前缀和数组:
a[1], a[2], a[3], ... , a[n]
那么构造差分数组:
b[1], b[2], b[3], ... , b[n]
且使得
a[1]= b[1]
a[2]= b[1]+b[2]
a[3]= b[1]+b[2]+b[3]
...
a[i]= b[1]+b[2]+...+b[i]
对一般用来快速操作整个数组,比如把c加到一个数组的[l,r]部分的所有数据上。相较于时间复杂度至少为O(n)的暴力方法,差分算法可以将时间复杂度降低到O(1)。
对于[l, r]+c的情况,先用前缀和的思路去考虑一下。
假如现b[l]加上c变成b[l]+c, 那么
a[l]也会自动加上c(a数组是b数组的前缀和),且a[l]及之后的数组都会加上c。
[l, n]+c情况基本如下
差分数组:b[1], b[2], b[l]+c, ... , b[n]
前缀和数组:a[1], a[2], a[l]+c, ... , a[n-1]+c, a[n]+c
由于实际的需求是[l,r]
所以需要把r之后的数全部减去c
即在b数组的r+1之后的数全部减c
如此一来
差分数组:b[1], b[2], b[l]+c, ... ,b[r], b[r+1]-c, ..., b[n-1],b[n]
前缀和数组:a[1], a[2], a[l]+c, ... , a[r]+c, a[r+1], ...,a[n-1], a[n]
差分过程
构建差分数组
区间[l, r]范围内加上需要的c
前缀和运算
insert就是在实现差分。
此外,特别强调:
b[i]+=b[i-1]
由于需要“输出最终整数序列”,所以需要进行前缀和操作,使b[i][j]变成新的a[i][j]。
而这条怎么来的呢?
在一维前缀和中,可知
S[i]=S[i-1]+a[i]
而在这里,S[i][j]就是新的b[i][j],a[i][j]就是原来的b[i][j]
差分矩阵(二维差分)
输入一个 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 个整数,表示所有操作进行完毕后的最终矩阵。
差分矩阵的思路
与前缀和矩阵相同,差分矩阵同样用到了“容斥原理”的思想,即先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复。
假设需要给(x1,y1)(x2,y2)的子矩阵中的数全部加上c。, , ,
那么b[x1][y1]+c就会使如下蓝色部分全部加c。(大于等于x1,y1的部分分别加c)
同理,范围过大,还需要删除不必要的部分,即减去c。
在删除多余部分的时候,基于容斥原理,还要重新补充重复删除的部分
差分矩阵过程
构建差分数组
在矩阵(x1,y1)(x2, y2)范围内加上需要的c
前缀和运算
此外,特别强调:
b[i][j]+=b[i-1]b[j]+b[i][j-1]-b[i-1][j-1]
由于需要“将进行完所有操作后的矩阵输出”,所以需要进行前缀和操作,使b[i][j]变成新的a[i][j]。
而这条怎么来的呢?
在二维前缀和中,可知
S[i,j]=S[i,j−1]+S[i−1,j]−S[i−1,j−1]+a[i,j]
而在这里,S[i][j]就是新的b[i][j],a[i][j]就是原来的b[i][j]
总结,对于差分,只用考虑如何更新而非考虑如何构造。
关键词: 如此一来
[ 相关文章 ]
差分,即前缀和的逆运算,两者之间的关系类似于数学中的求导和积分的关系。差分(一维差分)输入一个长度为n的整数序列。接下来输入m个操作,
黄颡鱼,俗称黄骨鱼,也叫黄辣丁或者黄腊丁。黄颡鱼富含蛋白质,钙、磷、钾、钠、镁等矿物元素,营养含量丰富,药用价值高。黄颡鱼富含蛋白质
1月16日,建安区委常委尚建华、建安区法院院长苏哲前往新元街道吕桥社区和忽庄社区慰问特殊困难群体,在气温骤降的冬日里及时送上党和政府的关
证券时报网讯,今天(18日)上午10时国新办举行新闻发布会,农业农村部总农艺师、发展规划司司长曾衍德和国家乡村振兴局有关负责人介绍2022年农
美联储“鹰声不断”!巴尔金警告通胀顽固:现在结束加息为时过早
大家好,我是鱼皮,昨天给大家分享了我的年假计划,给大家提供参考。我昨日的工作进展还算顺利吧,除了12:30早睡的Flag又没有完成,昨天项目
【社区团购方案】社区团购小程序哪个好?社区团购方案的内容是什么?许多企业在社区团购计划中遇到了许多问题,这无疑阻碍企业前进的脚步。今
2023年1月19日-2月12日我们不见不散!-地址-绵阳彩灯大世界安州区幸福七里-乘坐线路-花荄至秀水方向班车在幸福七里下车绵阳至灯会车程30公里,
美银证券发布研究报告称,维持中联重科(01157 HK)“中性”评级,目标价由4 2港元上调至4 5港元。
16日下午,青海省第十四届人民代表大会第一次会议第二次全体会议在青海西宁举行。祁增蓓摄 在维护人民群众生命财产安全方面,青海审结故意
比养牛羊赚钱,比养猪风险低,关键一年还能纯赚85万!这个养殖业呢,不仅赚钱多外,还有3大优势特点。一是条件要求低
山西卫视2023春晚有哪些嘉宾阵容?民谣界张尕怂亮相春晚录制现场~其他嘉宾届时关注直播哟~2023黄河民歌春晚于农历腊月二十八(2023年1月19日)19:35
在安徽宣城宁国市胡乐镇,居民素有舞三灯庆佳节的习俗,鱼灯、河灯、龙灯表演历史悠久。每逢新春佳节,居民自发组织,在乡村巡回表演,期盼来
”近日钱塘区公安分局白杨派出所接到群众吴某报警称某棋牌室有赌博违法情况接警后民警汪国庆迅速赶至现场处置但未在现场发现有违法行为聚众赌
含有芯和霜的句子优选81句1 天空灰蒙蒙的,院里的树从根到梢挂上了一层霜,就像开了一片白花花的梅花似的。把院子里的霜拿到放大镜下面看,有
先说核心观点:这政策,那行动,都不如:休养生息,给人信心。2023年最大的“政策”和共识应该是:“别再折腾了”。只要不折
IT之家1月14日消息,苹果于本周早些时候发布了iOS16 3的第2个eta版本更新,就目前而言,iOS16 3的更新幅度非常小,只
1月13日有网友在香港偶遇到了向佐郭碧婷一家,据网友在文中透露,自己在逛街的时候偶遇到了明星,是郭碧婷跟向佐带着孩子买零食还有玩具,两人
佛燃能源:关于持股5%以上股东减持计划时间过半的进展公告
支持四川沼气开发项目,安盛助力中国双碳目标2023年01月13日14:58中国网财经
[ 相关新闻 ]
Copyright 2015-2022 人人医院网 版权所有 备案号:粤ICP备18023326号-36 联系邮箱:8557298@qq.com