差分 【一维差分和二维差分】
创始人
2024-02-09 01:15:21

全文目录

  • 🤔一维差分
    • 😕差分数组的构建
  • 🤔二维差分
    • 😕差分矩阵的构建


🤔一维差分

首先来了解一下差分的性质,差分是前缀和的逆运算,如果说前缀和是:S = f(n) ,那么差分就是 D = f^-1(n) ,也就是说,原数组是差分数组的前缀和。

原数组:a[i],差分数组:b[i]

差分数组满足:

a[0 ]= 0;b[1] = a[1] - a[0];b[2] = a[2] - a[1];b[3] = a[3] - a[2];
...
b[i] = a[i] - a[i - 1];

原数组满足:

a[i] = b[1] + b[2] + ... + b[i];

差分数组一般用来将原数组中的一段区间加上或减去一个值。


差分数组的特性:

因为原数组是差分数组的前缀和,所以我们可以通过差分数组来求原数组。

那么,当差分数组中的某个位置 b[i] 发生了改变,通过差分数组求出来的原数组 a[i] 及之后的全部元素都会发生对应的变化。

但是如果只是对一段区间 [l, r] 的数据进行操作的话,上述操作会导致 r 后面的数据也发生了变化,所以需要对 b[r + 1] 进行反操作,来弥补这个问题。

在这里插入图片描述

代码:

b[l] += c;
b[r + 1] -= c;

😕差分数组的构建

在构建差分数组的时候,可以将原数组看作全是 0 的数组,原数组中的每一个元素都是可以看作是新插入的元素,也就是对 [i, i] 这个区间进行了插入 a[i] 的操作。


🤔二维差分

原数组 a[][] , 差分数组 b[][]

二维差分与一维差分的性质一样,只是作用范围有些不同,但是同样满足:

  1. 原矩阵a[][] 是差分矩阵b[][] 的前缀和数组,
  1. 通过差分矩阵来求原矩阵时,对差分矩阵中的某个元素 b[i][j] 进行 +- c,原矩阵中包括 a[i][j] 在内,右下角的全部元素都会 +- c

例:对差分数组进行 b[x1][y1] +- c,受影响的就是原数组中标绿的元素
在这里插入图片描述
二维差分的应用跟二维前缀和很相似,就是对原矩阵中的一个子矩阵插入一个值,如对以 x1, y2 为左上角, x2, y2 为右下角的矩阵插入一个值,就是对绿色部分的值插入一个值:
在这里插入图片描述
这个插入操作可以类比二维前缀和求和的操作,将多余的部分减去,再将多减去的部分加上,只不过,因为差分是前缀和的逆运算,所以前缀和是影响左上角,差分影响的是右下角。

插入代码:

void insert(int x1, int y1, int x2, int y2, int c)
{b[x1][y1] += c;b[x1][y2 + 1] -= c;b[x2 + 1][y1] -= c;b[x2 + 1][y2 + 1] += c;
}

根据二维差分的影响范围来说,可以利用画图来加深一下理解:

b[x1][y1] += c;

在这里插入图片描述

b[x1][y1] += c;
b[x1][y2 + 1] -= c;

在这里插入图片描述

b[x1][y1] += c;
b[x1][y2 + 1] -= c;
b[x2 + 1][y1] -= c;// 红色表示多减去的部分,下一步需要加上

在这里插入图片描述

b[x1][y1] += c;
b[x1][y2 + 1] -= c;
b[x2 + 1][y1] -= c;
b[x2 + 1][y2 + 1] += c;

在这里插入图片描述
这样,通过差分矩阵来求原数组的时指定的子矩阵就在 O(1) 的时间内得到了相应的操作。

😕差分矩阵的构建

我们可以想象原数组a[][]中全是0,那么对应的,它的差分矩阵b[][] 也是全是0。对于 a[][]中的每一个元素,我们就可以想象成是插入了以 c(c == a[i][j]),也就是对每个x1 == x2 == i, y1 == y2 == j的小矩阵进行了插入操作。

b[i][j]矩阵中全部插入了对应的 a[i][j]时,差分矩阵就构建完成了。


完结散花🌈🌈🌈
在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...