Skip to content

差分数组

Difference array

用相邻值之差表示序列,使区间加法转化为两个端点更新。

形式陈述

对序列 a1,,an,定义

d1=a1,di=aiai1 (i>1).

对区间 [l,r] 全部加 x,只需令 dl+=x,若 r<n 再令 dr+1=x。最终对 d 取前缀和即可恢复更新后的序列。

直觉

区间内部相邻元素同时增加,差值相互抵消;只有区间边界留下变化。

例子与边界

多次离线区间更新可在线性时间统一恢复。若更新不是可组合、可逆的加法作用,则普通差分表示不能直接使用。

推论与应用

它连接离散导数与前缀积分,并支撑二维差分、扫描线事件和区间更新批处理。

参考资料