码迷,mamicode.com
首页 >  
搜索关键字:lca    ( 2392个结果
CodeForces 29D Ant on the Tree
给一颗树,1为根,要求遍历树上所有点,给出叶子结点的访问顺序,限制每条边至多访问两次。 首先这是一棵树,那么两点之间的路线是确定的,所以我第一遍dfs预处理出从根节点到每个叶子的路径保存,以便后面输出。 那么就按照题目要求输出叶子结点的顺序依次输出,然后从一个叶子到下一个叶子的时候,从他们的最近公共祖先转折,所以我还预处理了相邻两个叶子结点的LCA。 #include...
分类:其他好文   时间:2014-08-15 14:37:08    阅读次数:220
POJ 1330 Nearest Common Ancestors LCA(在线RMQ,离线Tarjan)
最近公共祖先(Least Common Ancestor)的两种解决方式,在线RMQ算法和离线Tarjan算法,并且整理成为模板。...
分类:其他好文   时间:2014-08-14 01:33:07    阅读次数:374
LCA 算法学习 (最近公共祖先)poj 1330
#include"stdio.h" #include"string.h" #include"vector" using namespace std; #define N 11000 const int inf=1<<20; vectorg[N]; int s,t,n; int f[N],pre[N],ans[N]; bool vis[N]; int findset(int x) { if(...
分类:其他好文   时间:2014-08-13 22:30:17    阅读次数:252
hdu 4929 Another Letter Tree(LCA+DP)
hdu 4929 Another Letter Tree(LCA+DP) 题意:有一棵树n个节点(n 解法:一个很直观的想法,求出lca(设其为w)后,枚举x,求出a到w的路径上,能匹配s0的x长度前缀的情况有多少种,令其为c[x]。再求出b到w的路径上能匹配s0的L-x(L表示s0的长度)长度后缀的情况有多少种,令其为d[l-x],那么将所有的c[x]*d[l-x](x属于[0,l]...
分类:其他好文   时间:2014-08-13 10:38:05    阅读次数:346
HDU 4547 LCA倍增算法
CD操作Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1111Accepted Submission(s): 297Problem Descri...
分类:其他好文   时间:2014-08-12 18:21:04    阅读次数:217
hdu2586 LCA
给一颗无向树有n个结点,有m个询问,问树上任意两点间距离,n的范围是40000,m是200 这题告诉我们一个求树上两点间距离的好方法,就是先求根到其余所有点的距离,再求出询问的LCA,答案为dis[a]+dis[b]-2*dis[lca(a,b)] #include #include #include #include #include #include #include ...
分类:其他好文   时间:2014-08-11 17:52:12    阅读次数:244
HDU 2586 LCA-Tarjan
还是LCA-tarjan算法,跟POJ 1330做法基本类似,只是这个题目要求输出两个点的最短距离,其实利用LCA的性质,就是 两个点分别到最近公共祖先的距离之和一开始本来想用并查集把路径长度给找出来,但是不太好处理,原因是我刚好找到的这个点还没有加入到并查集中,(因为还没回溯上去),如果马上就合并...
分类:其他好文   时间:2014-08-10 18:06:30    阅读次数:274
poj 1330 Nearest Common Ancestors (LCA)
题意:求两个点的最近公共祖先。 1A#include #include #include #include #define maxn 100010 using namespace std; int fa[maxn],lev[maxn],pre[maxn],c1,c2; vector son[maxn]; bool dfs(int rt,int obj) { for(int i...
分类:其他好文   时间:2014-08-10 15:42:40    阅读次数:261
POJ 1330 LCA最近公共祖先 离线tarjan算法
题意要求一棵树上,两个点的最近公共祖先 即LCA现学了一下LCA-Tarjan算法,还挺好理解的,这是个离线的算法,先把询问存贮起来,在一遍dfs过程中,找到了对应的询问点,即可输出原理用了并查集和dfs染色,先dfs到底层开始往上回溯,边并查集合并 一边染色,这样只要询问的两个点均被染色了,就可以...
分类:其他好文   时间:2014-08-10 15:39:20    阅读次数:215
HDU 4916 Count on the path
题意: 给定一棵树和m个询问  每个询问要求回答不在u和v两节点所形成的路径上的点的最小标号 思路: 一开始以为是LCA…  不过T了好几次…  后来发现不用LCA也可做 考虑每个询问u和v  如果他们的lca不是1  则1一定是答案  不过求lca会T  那么我们只需要在遍历树的时候给节点染色  染的颜色就是1的儿子的颜色  如果x这个点在y的子树中(y是1的儿子)那么他的颜色就是y ...
分类:其他好文   时间:2014-08-09 21:33:29    阅读次数:213
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!