差分数组,又看到一个区间修改的神器
用f[1]=a[1];f[i]=a[i]-a[i-1];
如果想去区间修改a的值
例:
让l~r这个区间内的a[i]全部加上x
则只用f[l]+x;
f[r+1]-x;即可
疑问是为什么可以这样呢
因为我们可以用f[i]去还原a数组
a[i]=f[i]+a[i-1];
a[i-1]=f[i-1]+a[i-2];
.......
a[i]=f[i];
当f[i]+x后
后面的a[i]都会加x。
差分数组,又看到一个区间修改的神器
用f[1]=a[1];f[i]=a[i]-a[i-1];
如果想去区间修改a的值
例:
让l~r这个区间内的a[i]全部加上x
则只用f[l]+x;
f[r+1]-x;即可
疑问是为什么可以这样呢
因为我们可以用f[i]去还原a数组
a[i]=f[i]+a[i-1];
a[i-1]=f[i-1]+a[i-2];
.......
a[i]=f[i];
当f[i]+x后
后面的a[i]都会加x。