我还是太菜了考试了几天什么lca,kmp,线段树都不会所以借此填坑线段树
分为两种模板:
<1>
直接修改每个叶节点值
查询
<2>
将区间内叶子节点加上k
查询
我们来对比一下,<2>和<1>相比,就多了如下一段代码,这段代码就是线段树思想的核心:偏移量顺便往下传递。相应修改的值也要做一下修改。
int delta=tree[root].delta; //根的偏移量。
//往左右子树传递偏移量
tree[root*2].delta+=delta;
tree[root*2].maxx+=delta;
tree[root*2+1].maxx+=delta;
tree[root*2+1].delta+=delta;
tree[root].delta=0; //因为偏移量已经往下传,当前根的偏移量清0.
ATTENTION
只有一个大区间的答案可以从左右两个小区间的答案中合并而来时,才可以用线段树。反之,如果一个大区间的答案不可以从左右两个小区间的答案中合并而来时,线段树就失去了意义。
原文:http://www.cnblogs.com/Murs/p/7750518.html