![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构——LCA
倚剑笑紅尘
教练,我想学kaldi!
展开
-
poj1330 Nearest Common Ancestors()
本文代码参考kuangbin:点击打开链接本文解释参考:点击打开链接题目链接:点击打开链接题目大意:给出n 个结点和n-1条边构成一个生成树然后查询第i和第j个节点的第一个公共结点思路:LCA的裸题对于该问题,最容易想到的算法是分别从节点u和v回溯到根节点,获取u和v到根节点的路径P1,P2,其中P1和P2可以看成两条单链表,这就转换成常见的一道面试题:【判断两转载 2017-08-06 19:36:35 · 201 阅读 · 0 评论 -
SPOJ 10628. Count on a tree (树上第k大,LCA+主席树)
题目链接:点击打开链接题目大意:给你一颗n个结点的树,每个结点都有一个权值。为从结点u到结点v这条路径上所有的权值第k大是多少思路:主要思路是 树上第k大,LCA+主席树为什么要用到LCA?因为u到v的路径必定是从u走到他们的LCA(u,v)点,然后从LCA(u,v)点走到v。所以我们需要提前求出这棵树的LCA主席树怎么建树?每一棵线段树都是每个结点继承其父节点的原创 2017-08-11 21:54:26 · 313 阅读 · 0 评论 -
poj 1330 Nearest Common Ancestors(LCA kuangbin模板)
题目链接:传送门题目大意:n个点,n-1条边,询问一对点的公共祖先是?题目思路:模板题。分别用离线算法和在线算法计算。在线算法:利用DFS+ST算法,利用RMQ的求区间最大最小值的方法计算。利用DFS计算出的欧拉序列,要求的两点之间最小值就是所求的公共祖先。#include <stdio.h>#include <string.h>#include ...原创 2018-07-25 14:12:41 · 148 阅读 · 0 评论 -
poj 1470 Closest Common Ancestors(LCA, dfs+ST在线算法)
题目链接:传送门题目大意:给出n个点,以及每个点连接的点。给出m个查询,求出公共祖先出现的次数。题目思路:用dfs+ST在线算法#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>...原创 2018-07-25 15:45:19 · 139 阅读 · 0 评论