差分

差分

定义

差分十一种和前缀和相对的策略,可以当作是求和的逆运算。

这种策略的定义是令
( egin{cases} a_i-a_{i-1}~~~~~~iin[2,n]\ a_1~~~~~~~~~~~~~~~~~i=1 end{cases} )
简单性质:

  • (a_i)的值是(b_i)的前缀和,即(a_n=sum^n_{i=1}b_i)
  • 计算(a_i)的前缀和(sum=sum^n_{i=1}a_i=sum^n_{i=1}sum^i_{j=1}b_j=sum^n_i(n-i+1)b_i)

它可以维护多次对序列的一个区间加上一个数,并在最后询问某一位的数。注意修改操作一定要在查询操作之前。

示例
譬如使[l,r]中的每一个数加上一个k,就是

[b_1leftarrow b_l+k,b_{r+1}leftarrow b_{r+1}-k ]

其中(b_l+k=a_l+k-a{l-1},b{r+1}-k=a{r+1}-(a_r+k))
最后做一边前缀和就好了。

原文地址:https://www.cnblogs.com/JingFenHuanZhe/p/ChaFen1010.html