算法笔记--差分标记

算法笔记

所有元素初始值为0才能这么做。

①l--r全加1

a[l]++;

a[r+1]--;

求一遍前缀和为元素本身。

求两遍前缀和为元素前缀和。

例题1:http://codeforces.com/problemset/problem/816/B

例题2:http://codeforces.com/problemset/problem/834/B

例题3:http://acm.hdu.edu.cn/showproblem.php?pid=1556

②l--r从1加到r-l+1

a[l]++;

a[r+1]-=r-l+2;

a[r+2]+=r-l+1;

求两遍前缀和为元素本身。

求三遍前缀和为元素前缀和。

因为更新时复杂度是o(1)所以复杂度为求前缀和时的o(N)。

例题:http://arc077.contest.atcoder.jp/tasks/arc077_c

原文地址:https://www.cnblogs.com/widsom/p/7121047.html