C++算法——差分
1.差分
差分与前缀和的核心思想相同,是预处理,可以在暴力枚举的过程中,快速给出查询的结果,从而优化时间复杂度。
是经典的用空间替换时间的做法。
2.一维差分数组
前缀和与差分是⼀对互逆的运算,对差分数组做前缀和运算可以得到原数组。
给定一个数组,对这个数组中某段区间的元素多次进行同时加一个数的操作,如这类的问题,就可以使用差分数组的算法来解决。
模板题目;【模板】差分
进阶题目:P3406 海底高铁 - 洛谷
3.二维差分数组
作用:快速处理“将二维数组中,某一个子矩阵统一加上一个元素”的操作,可以达到O(1)的时间复杂度
性质:对差分矩阵进行前缀和运算后,能够还原出修改之后的原始矩阵。
3.1模板题目
【模板】二维差分
创建差分矩阵也很简单,在全局范围创建二维数组,此时数组每个值都是0,初始化原始矩阵时,每初始化一个元素,就相当于在这个范围中同时加上了一个k,此时差分矩阵进行对应的操作即可。