一、差配列的定义和用途1.定义:
对于已知具有n个要素的离线数列d,可以制作记录各个项和上一项的差分的差分分配列f。 很明显,f[1]=d[1]-0=d[1]; 对于整数i[2,n],设为f[i]=d[i]-d[i-1]。
2.简单性质
(1)计算数列各项的值) d(2)=f )1) f )2)=d )1)=d )2),数列第I项的值可以用差分配列的第一个I项之和来计算。 即,d ) I )=f ) I )前缀
)计算数列各项前缀与第I项前缀之和为数列前I项之和,即可得知导出
(此表达式最初不太理解,但如果展开此表达式,则从2表达式变为3表达式)3.用途:
(1)高速处理区间加减操作:
现在,如果对数列区间[L,R]上的数加上x,从性质(1)可以看出,首先受影响的差分配列中的要素是f ) l )。 也就是说,如果f ) l )=x,则后面几列的元素在计算中加上x。 最后,受影响的差分配列中的要素为f[R],因此如果设为f[R 1]-=x,则可以确保不影响r以后的数列要素的计算。 这样,不需要处理区间内一个个的数量,只要处理两个差分后的数量即可;
)2)提问区间和提问:
性质)2)可以计算数列各项前缀和序列sum各项的值; 很明显,区间[L,R]之和为ans=sum[R]-sum[L-1];