
LCA
Aerolite坠落
这个作者很懒,什么都没留下…
展开
-
HDU 2586 How far away ? (LCA最近公共祖先)
题目地址:HDU 2586 LCA第一发。 纯模板题。 偷懒用的vector,结果一直爆栈。把G++改成C++就过了。。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include <map>原创 2015-03-27 21:24:09 · 831 阅读 · 0 评论 -
HDU 2874 Connections between cities (离线LCA)
题目地址:HDU 2874 好坑的一道题。。MLE了好长时间、。、。全用了前向星而且把G++改成了C++才过了。。 LCA裸题,没什么好说的。。 代码如下;#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#inc原创 2015-04-03 20:22:42 · 836 阅读 · 0 评论 -
SPOJ 913 QTREE系列- Query on a tree II (倍增LCA)
题目地址:QTREE2 - Query on a tree II LCA学了离线与在线转RMQ方法后就去做这道题,于是想了好长时间也没想到怎么做。看了题解都是用的倍增LCA。。于是又去学了下倍增法求LCA,这才发现用倍增法做简直是水题。。。因为求路径的第k个点可以转化成求第k个父节点,然而倍增法的原理就是根据的父节点,于是这题就很容易解决了。。 求距离很好求。关键原创 2015-04-13 20:26:59 · 982 阅读 · 0 评论 -
POJ 1330 Nearest Common Ancestors (在线LCA转RMQ)
题目地址:POJ 1330 在线LCA转RMQ第一发。所谓在线LCA,就是先DFS一次,求出遍历路径和各个点深度,那么求最近公共祖先的时候就可以转化成求从u到v经过的点中深度最小的那个。 纯模板题。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorith原创 2015-04-08 21:21:35 · 808 阅读 · 0 评论 -
POJ 1470 Closest Common Ancestors (在线LCA转RMQ)
题目地址:POJ 1470 LCA模板题。。输入有点坑,还有输入的第一个结点不一定是根节点。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include <map>#include <set>#原创 2015-04-09 11:38:25 · 829 阅读 · 0 评论 -
POJ 1986 Distance Queries (在线LCA转RMQ)
题目地址:POJ 1986 纯模板题。输入的最后一个字母是多余的,完全不用管。还有注意询问的时候有相同点的情况。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include <map>#inclu原创 2015-04-09 12:13:47 · 943 阅读 · 0 评论 -
Codeforces Round #294 (Div. 2) E. A and B and Lecture Rooms(倍增LCA+树形DP)
题目地址:http://codeforces.com/contest/519/problem/E 这题作为E题来说挺水的。先用树形DP求出每个节点的子树的所有节点的个数。然后询问的时候先找到u,v路径中的中点,然后分情况讨论求出个数来就好了。。 犯了好多**错误。。。终于调试出来了。。。 代码如下:#include <stdio.h>#include <string.h>#include原创 2015-04-17 23:16:21 · 1788 阅读 · 0 评论 -
HDU 5266 pog loves szh III (线段树+在线LCA转RMQ)
题目地址:HDU 5266 这题用转RMQ求LCA的方法来做的非常简单,只需要找到l-r区间内的dfs序最大的和最小的就可以,那么用线段树或者RMQ维护一下区间最值就可以了。然后就是找dfs序最大的点和dfs序最小的点的最近公共祖先了。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>原创 2015-06-08 14:41:21 · 1483 阅读 · 0 评论