差分
差分数组diff[]的定义:diff[i]=a[i]-a[i-1]
对差分数组做前缀和可以还原为原数组。
同时利用差分数组可以快速的区间修改,下面是讲区间[l,r]都加上x的方法。
diff[l] += x;
diff[r + 1] -= x;
但是注意,差分数组不能实现“边修改边查询(区间和)”,只能实现“多次修改后多次查询 ”。如果要实现“边修改边查询”需要使用树状数组、线段树等数据结构。
//差分的实现,这里建议使得a[0]=0,下标从一开始。
for (int i = 1; i <= n; ++i)
{
diff[i] = a[i] - a[i - 1];
}
//将区间[l.r]都加上x
diff[l] += x;
diff[r + 1] -= x;
例题:
2).