06 2019 档案
摘要:我们知道,要求区间 [ l , r ] 的和可以通过 [ 1 , r ] - [ 1 , l - 1 ]得到。 把这个思想应用到线段树上可以得出 右儿子的信息 = 父亲 - 左儿子。 查询 复杂度O(logN),例如求1~7的和,可以通过4 6 7这三个结点的信息得出结果。 1 int a[maxn
阅读全文
摘要:题目链接:http://poj.org/problem?id=3468 很基础的一道延迟标记的题 需要注意的是数据得到了加强,故这里要用__int64 1 #include <cmath> 2 #include <queue> 3 #include <string> 4 #include <cstd
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 通过这个题练习了基本的Pushdown的操作 参考着蓝书的模板敲了一下,需要修改的地方就是:这里的区间修改是直接改变值而不是增加值 把+=改成=即可。 1 #include <cmath> 2 #
阅读全文
摘要:线段树 线段树的每个结点都代表一个区间。 线段树有唯一的根节点代表整个范围,比如:[1,N]; 线段树的每个叶子结点都代表一个长度为1的元区间 [x,x]; 对于每个内部节点[l,r],它的左节点是[l,m],右节点是[m+1,r],其中m=(l+r)/2(向下取整) 图例说明: 该线段树存储的是[
阅读全文