首页 > 其他分享 >前缀和 / 差分

前缀和 / 差分

时间:2024-05-14 13:55:40浏览次数:20  
标签:下标 前缀 差分 逆运算 区间 运算

前置知识

有某些运算拥有逆运算,通过逆运算,可以撤销原运算的效果。

比如:加法和减法互为逆运算、乘法和除法互为逆运算、
异或的逆运算就是自身、求最大值、最小值不具有逆运算、修改不具有逆运算。

前缀和

区间的操作必须拥有逆运算才可用前缀和,所以任意区间的运算结果都可以由两个前缀区间的运算结果逆运算得到,比如 \([x,y]=[0,y]-[0,x-1]\),注意 \(x=1\) 时若下标从 \(0\) 开始会越界,所以一般下标从 \(1\) 开始,用 string 是要小心。

发现每次计算前缀区间时间很浪费,所以预处理所有前缀区间的运算结果。

进制区间

给定长为 \(n\) 的数列 \(a_i\) 与基数 \(b\),进行 \(t\) 次询问,每次询问 \([l, r]\) 内元素作为 \(b\) 进制表示时的数值,对 \(10^9+7\) 取模的结果。

分析

预处理每个前缀的 \(b\) 进制数为 \(s\) 数组,\(s_i=s_{i-1}\times b + a_i\),对于每次 \([i,j]\),先将两个前缀区间取出,需要将 \([0,i-1]\) 这段区间偏移 \(b^{j-i+1}\),如图:

\(b\) 的幂次无需快速幂,预处理即可。

差分

前缀计算是可逆的从后往前,将每个元素变成与前一个元素逆运算的结果,差分区间的范围可能比较大,无法将差分点作为数组下标进行索引,差分点的数量与操作数量相关,大部分位置都不是差分点,所以可以将差分点排序,按顺序处理,相同的差分点要合并处理。

高维差分可以将个维度依次进行差分,还原时按照差分相反的顺序逐个维度还原,如二维差分可以看成先差分行在差分列。

前缀和适用于查询较多,差分适用于修改较多。

标签:下标,前缀,差分,逆运算,区间,运算
From: https://www.cnblogs.com/Livedreamyhy/p/18191142

相关文章

  • LaTeX 常用引用标签前缀
    引用对象标签前缀ChapterchSectionsecSubsectionsecAppendixappFigurefigTabletabListitemitmEquationeqnAlgorithmalg参考:LaTeX交叉引用系统简介......
  • 蓝桥杯-递增三元组(三种解法,二分, 双指针, 前缀和)
    给定三个整数数组A=[A1,A2,…AN],B=[B1,B2,…BN],C=[C1,C2,…CN],请你统计有多少个三元组(i,j,k)满足:1≤i,j,k≤NAi<Bj<Ck输入格式第一行包含一个整数N。第二行包含N个整数A1,A2,…AN。第三行包含N个整数B1,B2,…BN。第四行包含N个整数C1,C2,…CN。输出格......
  • ABC353E字典树处理最长公共前缀
    https://atcoder.jp/contests/abc353/tasks/abc353_e其实就是字典树板子题。似乎遇到最长公共前缀,就该想到字典树。依次加入每个字符串:维护一个数组siz来统计在当前串之前的串在对应点的出现次数。手模一下字典树的建树过程,显然如果当前串\(S_i\)能跑到一个曾经串\(S_......
  • 差分升级库+卫星定位+乘客流量测量仪
    1、mcu_bsdiff_upgrade-适用于嵌入式单片机的差分升级通用库mcu_bsdiff_upgrade是一款适用于嵌入式单片机的差分升级库,通用所有单片机,如stm32、华大、复旦微、瑞萨等。适合嵌入式的差分升级又叫增量升级,顾名思义就是通过差分算法将源版本与目标版本之间差异的部分提取出来制作......
  • 前缀和
    前缀和一维前缀和S[i]=a[1]+a[2]+...a[i]a[l]+...+a[r]=S[r]-S[l-1]//注意,S从1开始比较好二维前缀和S[i,j]=第i行j列格子左上部分所有元素的和以(x1,y1)为左上角,(x2,y2)为右下角的子矩阵的和为:S[x2,y2]-S[x1-1,y2]-S[x2,y1-1]+S[x1......
  • 208. 实现 Trie (前缀树)-python
    Trie(发音类似"try")或者说前缀树是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现Trie类:Trie()初始化前缀树对象。voidinsert(Stringword)向前缀树中插入字符串word。booleansearch(St......
  • 前缀和与组合数
    前缀和与组合数一道题会涉及组合数一般有这么几种可能题目公式里直接带了组合数。题目和排列组合相关特殊的高维前缀和第一种第二种比较明显的和组合数相关联。而第三种就和组合数的性质相关。我认为多次前缀和会与组合数产生联系的本质是组合数的一个公式。\(C(m,n)=C(......
  • 2024-05-04:用go语言,给定一个起始索引为0的字符串s和一个整数k。 要进行分割操作,直到字
    2024-05-04:用go语言,给定一个起始索引为0的字符串s和一个整数k。要进行分割操作,直到字符串s为空:选择s的最长前缀,该前缀最多包含k个不同字符;删除该前缀,递增分割计数。如果有剩余字符,它们保持原来的顺序。在操作之前,可以修改字符串s中的一个字符为另一个小写英文字母。在最佳情......
  • 树上差分等操作
    树链剖分&树上差分有一些相关的树上操作主要是写可持久化的时候的时候发现\(lxl~Day~5\)中有些东西根本不是可持久化...树链剖分主要记录重链剖分,不讲基本原理,只是题解CF536ETavasonthePath好像并没有可持久化,但是树剖先考虑在序列上做这个问题,......
  • 前缀和的一些笔记
    左神课程笔记,前缀和笔记,(前缀和也是想双指针一样管理两个指针之间的区间的)前缀和(前i个数的和)个人理解,把前缀和当成两个指针,维护一个区间,例如i-1到i这两个双指针之间管理的线段上放着一个a[i-1],感觉差分也能这样理解,a[i-1]-a[i]之间放着一个差分值下标i结......