题目地址:HDU 5266
这题用转RMQ求LCA的方法来做的非常简单,只需要找到l-r区间内的dfs序最大的和最小的就可以,那么用线段树或者RMQ维护一下区间最值就可以了。然后就是找dfs序最大的点和dfs序最小的点的最近公共祖先了。
代码如下:#include
#include
#include
#include ...
分类:
其他好文 时间:
2015-06-08 14:59:13
阅读次数:
133
poj1330-Nearest Common Ancestors
训练暑期课面向全球招生,欲报名从速!
Language:
Default
Nearest Common Ancestors
Time Limit: 1000MS
Memory Limit: 10000K
Total Submissions: 20814
...
分类:
其他好文 时间:
2015-06-01 09:45:03
阅读次数:
137
题目链接:
hihocoder1067
题解思路:
面对10^5个 名字和10^5条询问,肯定要用到特殊的方法:
1.把所有的询问先存下来,然后再遍历一次整棵树得到所有答案
2.遍历的过程中 查询含当前节点的 所有询问,然后找到询问中的另一个节点;查看另一个节点的状态。
如果另一个节点未访问过,接下来处理;
...
分类:
其他好文 时间:
2015-05-27 12:26:08
阅读次数:
146
Nearest Common AncestorsTime Limit: 1000MSMemory Limit: 10000KTotal Submissions: 20715Accepted: 10910DescriptionA rooted tree is a well-known data str...
分类:
编程语言 时间:
2015-05-22 13:17:34
阅读次数:
137
hdu 2586How far away ?题目大意:给定n-1条边构成一棵树,无向的;和m个询问,对于每一个询问按顺序回答。结题思路:lca算法算出最近公共祖先,然后dis[u]+dis[v]-2*dis[father](father是u,v的最近公共祖先),小trick是在构造询问树的时候把权值...
分类:
其他好文 时间:
2015-05-20 11:10:47
阅读次数:
124
Tarjan算法适用于离线批量处理多个查询请求。基本思想是以深度优先搜索的顺序访问这颗树,给这棵树的结点染色,一开始所有结点都是白色的,而当第一次经过某个结点的时候,将它染成灰色,而当第二次经过这个结点的时候——也就是离开这棵子树的时候,将它染成黑色。...
分类:
编程语言 时间:
2015-05-19 14:54:36
阅读次数:
169
在有根树中,两个结点u和v的公共祖先中距离最近的那个称为最近公共祖先(lowest common ancestor)、如图lca(4,7) = 2, lca(6,8)=1, lca(5,8)=5记点v到根的深度为depth[v], 那么如果w是点u和v的公共祖先的话, 让u向上走depth[u] -...
分类:
编程语言 时间:
2015-05-19 00:23:40
阅读次数:
661
题意:询问树上从u到v的路径是否经过k思路:把树dfs转化为有根树后,对于u,v的路径而言,设p为u,v的最近公共祖先,u到v的路径必定是可以看成两条路径的组合,u->p,v->p,这样一来便可以将判断条件转化为(LCA(u,k)=k || LCA(v,k)=k)&& LCA(k,p)=p。由于这个...
分类:
其他好文 时间:
2015-05-17 07:07:45
阅读次数:
132
传送门:#1067 : 最近公共祖先·二时间限制:10000ms单点时限:1000ms内存限制:256MB描述上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站,这个网站可以计算出某两个人的所有共同祖先中辈分最低的一个是谁。远在美国的他们利用了一些奇妙的技术获得了国内许多...
分类:
其他好文 时间:
2015-05-15 17:25:32
阅读次数:
354
http://poj.org/problem?id=1330 1 #include 2 #include 3 #include 4 #define mt(a,b) memset(a,b,sizeof(a)) 5 using namespace std; 6 const int inf=0...
分类:
其他好文 时间:
2015-05-14 23:22:22
阅读次数:
258