一句话理解
差分数组:d[i]=a[i]-a[i-1],是前缀和的逆运算。
为什么要学
区间加减变成两个点的修改。
讲解
给 [l,r] 都加 k:d[l]+=k,d[r+1]-=k。最后前缀和还原 a。
多次区间修改、最后统一询问,差分数组非常合适。
例子
d[l] += k;
d[r + 1] -= k;
还原后 l..r 都加了 k,r+1 起抵消。
常见错误
- r+1 越界没开 n+2。
- 每次修改都立刻还原,失去意义。
第 189 课
差分数组:d[i]=a[i]-a[i-1],是前缀和的逆运算。
区间加减变成两个点的修改。
给 [l,r] 都加 k:d[l]+=k,d[r+1]-=k。最后前缀和还原 a。
多次区间修改、最后统一询问,差分数组非常合适。
d[l] += k;
d[r + 1] -= k;
还原后 l..r 都加了 k,r+1 起抵消。
区间 [l,r] 加 k,除了 d[l]+=k,还要 d[____]-=k
Ctrl / ⌘ + Enter 运行 · Tab 缩进
左右方向键也可翻课