前缀和&差分

这篇具有很好参考价值的文章主要介绍了前缀和&差分。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前缀和

前缀和:一段序列里的前n项和

给出n个数,在给出q次问询,每次问询给出L、R,快速求出每组数组中一段L至R区间的和

给出一段数组,每次问询为求出l到r区间的和

普通方法:L到R进行遍历,那么在每次求区间和的过程中时间复杂度为O(n),q次问询时间复杂度为O(q*n)

前缀和:建立前缀和数组,sum[i]=sum[i-1]+arr[i]。(i-1存在越界的问题,所以i从1开始遍历)

              计算L到R的区间和,包括arr[L]和arr[R]两个值(边界值),区间和=arr[R]-arr[L-1]

              时间复杂度从O(q*n)降至O(q*1)

二维前缀和

二维前缀和数组是原数组它本身位置的数及其左上角全部的数

前缀和&差分,算法作业,算法

 

二维前缀和的应用:求二维数组中arr[x1][y1]到arr[x2][y2]区间内的数之和 

差分

给出n个数,再给出q次问询,每次问询给出L、R、X,要求在L到R上每一个值都加上X,直到最后输出这个数组 

普通方法:遍历,时间复杂度为O(q*n)

差分:建立差分数组,difference[i]=arr[i]-arr[i-1],arr[i]=difference[i]+arr[i-1]。

        (同样i从1开始遍历)

          时间复杂度从O(q*n)降至O(q*1)

数组arr

1 1 1 1 1 1

差分数组difference

1 0 0 0 0 0

此时,L=2,R=4,X=1

操作方式:difference[L]=difference[L]+X,影响L之后的数字

                  difference[R+1]=difference[R+1]-X,避免影响R+1以及之后的数字

操作后的差分数组difference

1 1 0 0 -1 0

还原后的数组arr

1 2 2 2 1 1

二维差分

一维差分修改差分数组中的某个数,影响的是原数组它本身及其之后的数

二维差分修改差分数组中的某个数,影响的是原数组它本身及其右下角全部的数

二维差分的应用:对以 x1, y1 为左上角, x2, y2 为右下角的矩阵插入一个值 / 修改值

前缀和&差分,算法作业,算法文章来源地址https://www.toymoban.com/news/detail-618173.html

到了这里,关于前缀和&差分的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OI学习笔记】基础算法-前缀和与差分算法

    板块:基础算法、线性优化 难度:较易 前置知识:C++基础语法 在一维空间中,对于一个数据总量为 n n n 的数组 a a a ,有数据 a [ 1 ] , a [ 2 ] , a [ 3 ] , . . . , a [ n − 1 ] , a [ n ] a[1],a[2],a[3],...,a[n-1],a[n] a [ 1 ] , a [ 2 ] , a [ 3 ] , ... , a [ n − 1 ] , a [ n ] ,定义一个数组 s u m sum s u m ,

    2024年02月08日
    浏览(33)
  • C++基础算法前缀和和差分篇

    📟作者主页:慢热的陕西人 🌴专栏链接:C++算法 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 主要讲解了前缀和和差分算法 Ⅵ .Ⅰ前缀和 ① 一维前缀和 : ​ 就是构建一个新的数组 s ,用来存储另一个数组的和前 i 个数组元素的和。用公式表达就是: S [ i ] = a [ 0 ]

    2024年02月16日
    浏览(39)
  • 【有营养的算法笔记】基础算法 —— 推导证明前缀和与差分

    👑作者主页:@安 度 因 🏠学习社区:StackFrame 📖专栏链接:有营养的算法笔记 如果无聊的话,就来逛逛 我的博客栈 吧! 🌹 Hello,小伙伴们,好几天没有更新了,今天更了一篇比较“硬核的文章”。 主要内容为前缀和与差分算法的推导证明和代码实现。这篇文章博主还是画

    2024年01月21日
    浏览(39)
  • 洛谷题单--算法[2-1] 前缀和、差分与离散化

    目录 0.铺垫学习:p1115最大子段和--前缀和+贪心+DP 1.p1719最大加权矩形--前缀和+贪心+DP+矩阵压缩 原题链接: P1115 最大子段和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 原题: 题目描述 给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。 输入格式 第

    2024年02月22日
    浏览(30)
  • 一文带你深入了解算法笔记中的前缀与差分(附源码)

    📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c++阶段, 因为最近参加新星计划算法赛道(白佬),所以加快了脚步,果然急迫感会增加动力 ——目标Windows,MySQL,Qt,数据结构与算法,Linux,多线程,会持续分享学习成果和小项目的 📖作者主页:热爱编程的

    2023年04月12日
    浏览(38)
  • 算法基础学习笔记——④前缀和\差分\双指针\位运算

    ✨ 博主: 命运之光 ✨ 专栏: 算法基础学习 目录 ✨前缀和 ✨一维前缀和 🍓一维前缀和模板: ✨二维前缀和 🍓二位前缀和模板: 前言: 算法学习笔记记录日常分享,需要的看哈O(∩_∩)O,感谢大家的支持! 原i:a[1] a[2] a[3] …a[n] 前缀和:s[i]=a[1]+a[2]+…+a[i] s[0]=0(方便处理

    2024年02月08日
    浏览(33)
  • C++ 二维差分 二维前缀和逆运算 差分矩阵

    输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x1,y1,x2,y2,c ,其中 (x1,y1) 和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将选中的子矩阵中的每个元素的值加上 c 。 请你将进行完所有操作后的矩阵输出。 输入格式 第一行包含整数

    2024年02月21日
    浏览(42)
  • 高精度/前缀和/差分

    存储方式: 整数的长度一般小于1e6 大整数的每一位存储到数组里 存储时低位在前,高位在后,方便进位 高精度加法 每一位相加Ai + Bi + t, t表示进位取值0/1,逢十进一 模板: 高精度减法 每一位相减Ai - Bi - t, t 表示借位取值0/1 模板: 高精度乘法 A * b ,b=10000, len(A) = 1e6 , 乘的

    2024年02月16日
    浏览(31)
  • 前缀和&差分

    前缀和:一段序列里的前n项和 给出n个数,在给出q次问询,每次问询给出L、R,快速求出每组数组中一段L至R区间的和 给出一段数组,每次问询为求出l到r区间的和 普通方法: L到R进行遍历,那么在每次求区间和的过程中时间复杂度为O(n),q次问询时间复杂度为O(q*n) 前缀和:

    2024年02月15日
    浏览(25)
  • 前缀和、差分

    前缀和可以快速求区间和。 差分相当于前缀和的逆运算。 前缀和、差分都是以空间换时间的算法 注意:本文图文并茂 将提供以下图文链接供大家理解: 图文链接: 飞书图解链接🎉🎉🎉 密码: 672Z172 定义 前缀和可以简单理解为「数列的前 n 项的和」,是一种重要的预处

    2024年02月05日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包