二阶差分可以看成是:差分数组+等差数列。之前学习的差分法的应用就是在区间内操作,单一的加减一个固定的数字。(b[i]=a[i]-a[i-1],a[0]=0)然后前缀和就是所求的数组了。
但是遇到等差数列时就不能这样去解题了。比如对区间[2,6]加上一个首项为a,公差为d的等差数列,就需要对每一个点进行更改。
我们设a为原数组,b为一阶差分数组,c为二阶差分数组。当在[l,r]内加上一个首项是s,公差为d,末项为t=s+(r-l)*d的等差数列:
对a的影响:
此时a数组对b数组的影响:
此时b数组对c数组的影响: