有前缀数组q[N],差分数组d[N];
有原数组a[N];
若有操作对a数组的i位到j位加上某个数x;
求之后某个位置的某个数,和i到j位置的和;
此时用到差分数组(将原数组后面一个数减去前一个数得到)
如a[N]:1 3 5 9 , d[N]=1 2 2 4;
要在第1位到第4位同时加2;做4次加法(O(n))是 3 5 7 11
而在数组d上操作:只需改动两个位置第1位,和第5位;即第
i位和第j+1位;在第i位加x,第j+1位-x;得d数组:3 2 2 4 ?
然后求前缀和:3 5 7 11 和原数组一模一样;此操作如果对
N次加法和查询操作可将复杂度降为O(n);
前缀差分
最新推荐文章于 2023-11-20 15:34:48 发布