差分数组在数组某一段数值同乘以一个值,或者求某数组的前n项和非常方便
int a[] = {0,1,2,3,4,5};
b[i] = a[i] - a[i-1];(1<i≤n,b[1]=a[1],a[0] = b[0] = 0)
b[ ] = {0,1,1,1,1,1}
则称b[ ]是a的差分数组,它具有的性质是a[i] = b[i] + b[i-1] + … + b[1];
如果要在数组a的【x,y】区间上每个元素加上z,那么只要修改b[x] 和 b[y+1]这两个值
也就是:
b[x] += z;
b[y+1] -= z;
除此之外,我们还有
f[i]=f[i-1]+d[i](1<i≤n,f[1]=d[1]=a[1]);
sum[i]=sum[i-1]+f[i](1<i≤n,sum[1]=f[1]=d[1]=a[1])。
所以