ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022.3.1#差分与前缀和思想

2022-03-01 01:00:59  阅读:146  来源: 互联网

标签:Xenny 单点 前缀 树状 差分 数组 区间 2022.3


差分:

给出n个数,再给出Q个询问,每个询问给出l,r,x,要求你在l到r上每一个值都加上x,而只给你O(n)的时间范围,怎么办?

Xenny大佬的树状数组详解 - Xenny - 博客园 (cnblogs.com)里利用一个差分值构建的树状数组,可以用来进行区间更新,单点查询。

差分的特点是区间[a,b]加k的话,我只要对差分数组的d[a]+k,d[b+1]-k即可(注意如果b+1>n则d[b+1]不变)

“则有 A[i] = Σij = 1D[j];(D[j] = A[j] - A[j-1]),即前面i项的差值和,这个有什么用呢?例如对于下面这个数组

  • A[] = 1 2 3 5 6 9
  • D[] = 1 1 1 2 1 3

如果我们把[2,5]区间内值加上2,则变成了

  • A[] = 1 4 5 7 8 9
  • D[] = 1 3 1 2 1 1

发现了没有,当某个区间[x,y]值改变了,区间内的差值是不变的,只有D[x]和D[y+1]的值发生改变,至于为什么我想我就不用解释了吧。”(转自Xenny)

单点查询上,可以知道A[i]=D[1]+D[2]+....+D[i-1]+D[i],会使得单点十分好求。

这是线性的差分。


 

 前缀和可以看作给你一个差分数组,你要建立一个原数组。

标签:Xenny,单点,前缀,树状,差分,数组,区间,2022.3
来源: https://www.cnblogs.com/Tiachi/p/15948364.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有