差分
用差分加二次前缀和构建连续变化量的数组
想要:
[p1,p2]递增
[p2,p3]不变
[p3,p4]递减
int p1 = 2,p2 = 5,p3 = 8,p4 = 12;
ca[p1] += 1;
ca[p2 + 1] -= 1;
ca[p3 + 1] -= 1;
ca[p4 + 1] += 1;
go(i,1,20) ca[i] += ca[i-1];
go(i,1,20) ca[i] += ca[i-1];
go(i,1,20) cout<<i<<" ";cout<<'\n';
go(i,1,20) cout<<ca[i]<<" ";cout<<'\n';
输出结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
0 1 2 3 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 0