差异分配列1 .定义:差异分配列是一组表示数组中两个相邻元素之间差异的数组
对于已知具有n个要素的离线数列d,可以制作记录各个项和上一项的差分的差分分配列f。 很明显,f[1]=d[1]-0=d[1]; 对于整数i[2,n],设为f[i]=d[i]-d[i-1]。
图:
b列的数组是原始数组,d列的数组是b的差分配列。
2 .与前缀的计算:如图:
b是原始数组,d是差分配列,f是前缀和
从图中可以看到:
F1=D1
F2=D1 D1 D2
F3=D1D1D2D3
.
如果计算数列各项前缀之和,则第I项前缀之和成为数列前面I项之和,可知导出
可以用差分配列求出数列的前缀和。
3 .差分配序列应用:该方法适用于区间频繁修改,且该区间范围较大的离线查询。
差分配列的实现很简单。 这里不怎么说明。 是简单的要素减法。
4 .求解差分配序列前缀和一维序列重叠区间时的应用: b :序列中第一个复盖的区间[1 - 7]
D:数组中第二个复盖的区间[10 - 18]
F:数组中第三个复盖的区间[16 - 25]
h :差分配列:将所选区间的起始位置设定为1,将所选区间的结束位置设定为-1
J:差分配序列的前缀和
可以看到,前缀表示数组中的每个元素在区间中被复盖的次数,如果数字=0,则表示该数字在区间中未被选择