差分:
而对于原数组的区间修改,可以转换到差分数组中
如要修改a3 ~ a5全部加1,则可转化为:
c3+1,c6-1;
//可自行推一下,看是否合理
至于树上差分:
可以先将其简单的理解成:在一棵树上,修改一段区间,可能加,也可能减
最后再输出其中每个节点上的数字
若一个一个加那太慢了…………so…………树上差分
若要将“u”~“v”这条路径上所有的节点全部加上“x”
…………
…………
解法:
cnt[u]+=x; //cnt[ ]为差分数组
cnt[v]+=x;
cnt[lca (u,v)]-=x;
cnt[fa[lca (u,v)][0]]-=x //fa[ ][ ]为ST表
最好自行画图理解一下…………
而最后每个节点上的树就是这个节点+其所有子节点的和