
LCA
文章平均质量分 70
Green_G
这个作者很懒,什么都没留下…
展开
-
HDU 5266 pog loves szh III
点击打开链接 一棵树一共有3*10^5个结点,标号为1~N,接下来有3*10^5个询问,给出两个数字L,R,问标号L到R的最近公共祖先是几号结点,默认1号结点为树根。 首先要注意一个问题,这里有10^5数量级的点,如果退化成一条链,在进行dfs的时候就会爆栈,解决方法有3,bfs或者手动dfs或者加黑科技 #pragma comment(linker, "/STACK:102400000原创 2015-06-23 08:28:56 · 286 阅读 · 0 评论 -
LCA倍增法
LCA在线倍增法实际上是将上升的步数用二进制来表示,经过试跳一个级数来确定是否可以上升,最终找到LCA,整个路径长度假设是n的话,这个过程就是O(logn)的。 代码如下 1. DFS预处理出所有节点的深度和父节点 void dfs(int u) { int i; for(i=head[u];i!=-1;i=next[i]) { if (!deep[t原创 2015-06-23 17:01:20 · 1464 阅读 · 1 评论