摘要: 树链剖分。 除去换根的俩个操作,在树链剖分后很容易实现。 换根以后只需操作的时候进行分类讨论即可。 操作2不会受到换根的影响。 操作3:如果询问点就是根,输出整个线段树最小值。 如果询问点在根到1的路径上,查询(1,st[p])和(ed[p]+1,n)的最小值,st和ed分别为出入栈的编号,p为路径上最靠近询问点的点。 其他情况下,输出范围(st[... 阅读全文
posted @ 2016-06-29 17:33 invoid 阅读(194) 评论(0) 推荐(0) 编辑
摘要: dfs序+线段树. 首先生成树的出栈入栈序。 然后入栈设为a[u],出栈设为-a[u]。 子树在线段树上是一个连续的范围,所以三个操作都可以在线段树上实现了。 ps:val设成int,wa了无数发。。 #include #include #include #include using namespace std; typedef long long LL; const int... 阅读全文
posted @ 2016-06-29 10:29 invoid 阅读(128) 评论(0) 推荐(0) 编辑