蓝桥杯必备算法分享——差分算法
创始人
2024-04-08 19:59:53
0

AcWing—差分算法


文章目录

  • AcWing---差分算法
    • 一、什么是差分?
    • 二、差分的作用
    • 三、一维差分模板
    • 四、二维差分
    • 五、二维差分构造方法图示:
    • 六、二维差分矩阵模板
  • 总结


差分算法是前缀和算法的逆运算。两者可以对比着学习:

一、什么是差分?

在这里插入图片描述
差分的概念是相对与前缀和说明的。

二、差分的作用

在这里插入图片描述
我们画图解释一下这里很容易出错:
在这里插入图片描述
  我们从l开始都加了C,但是只是区间[l,r]上加C,所以我们从r+1开始就减去C,最后的结果是只有所选区间的每一个数增加了C。
  之前我们给所选区间每个数加C它的时间复杂度是O(n),使用差分算法之后时间复杂度可以提升到O(1),只需要修改下面两步即可:
在这里插入图片描述
很对人都在考虑如何构造差分数组,其实不需要担心。
我们假设:
在这里插入图片描述

三、一维差分模板

给区间[l, r]中的每个数加上c:B[l] += c, B[r + 1] -= c

四、二维差分

一维差分是在一段上插入C,而二维差分就是在一个子矩阵加上C,原理类似:
在这里插入图片描述

五、二维差分构造方法图示:

在这里插入图片描述

六、二维差分矩阵模板

给以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵中的所有元素加上c:
S[x1, y1] += c, S[x2 + 1, y1] -= c, S[x1, y2 + 1] -= c, S[x2 + 1, y2 + 1] += c

总结

  今天分享了差分算法,这个算法可以和之前的前缀和算法比较着学习,这两个算法的关系很紧密,理解了其中一个另外一个也很容易理解,作用就是给所选区间中的每个数加上C,提高时间效率,使时间复杂度达到O(n),希望对大家有帮助,我们明天见~

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...