#include#includeusing namespace std;const int MAX_N=100005;struct Edge{ int v,id,next;}edge[MAX_N*4];int a[MAX_N],b[MAX_N],to[MAX_N],k[MAX_N],lca[M...
分类:
其他好文 时间:
2015-09-18 21:46:34
阅读次数:
165
管道管道是Unix系统IPC的最古老方式,有两种局限性:(1) 历史上它们是半双工的(即数据只能在一个方向上流动),虽然现在某些系统提供了全双工管道,但是为了可移植性,不要抱有绝对的全双工假设。(2) 管道只能在具有公共祖先的两个进程之间使用(一般都是用于父子进程之间)。管道是通过调用pipe函数创...
分类:
系统相关 时间:
2015-09-04 15:41:32
阅读次数:
334
并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。
使用并查集时,首先会存在一组不相交的动态集合 $S = \left\{ {{S_1},{S_2}, \cdots ,{S_k}} \rig...
分类:
其他好文 时间:
2015-08-31 23:53:36
阅读次数:
353
大意:告诉你一些字符串 让你组成字典树,然后定义每个节点到所有叶子节点的距离的和等于改点的value当根节点只有一个孩子,该根节点也算一个叶子节点问所有节点的value的最小值分析:开始做的时候 就想的是 枚举每个点 然后求它到所有叶子节点的和 求任意两点的最近距离 用公共祖先来求于是就有了这个算....
分类:
其他好文 时间:
2015-08-31 21:41:36
阅读次数:
324
题目链接:点击打开链接
题意描述:给定一棵树,找出树中任意两点之间的距离?
解题思路:
1、dfs预处理达到欧拉序列
2、使用RMQ找出最近公共祖先
3、找出根到任意一点的距离,答案为dis[f]+dis[t]-2*dis[rt]
代码:
#include
#include
#include
#include
#define MAXN 40010
using ...
分类:
其他好文 时间:
2015-08-25 23:56:36
阅读次数:
194
普通二叉树寻找公共祖先,二叉树的问题基本就是遍历,最小的公共祖先的满足下面一个性质:1、两个节点分别在左右子树上,2、一个节点是另一节点的祖先 1 class Solution { 2 public: 3 TreeNode* lowestCommonAncestor(TreeNode* ro...
分类:
其他好文 时间:
2015-08-21 15:09:12
阅读次数:
244
首先推荐两个博客网址:http://dongxicheng.org/structure/lca-rmq/http://scturtle.is-programmer.com/posts/30055.html[转]tarjan算法的步骤是(当dfs到节点u时): 1 在并查集中建立仅有u的集合,设置该集...
分类:
其他好文 时间:
2015-08-14 21:03:48
阅读次数:
171
Lowest Common Ancestor of a Binary Tree Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.
According to the definition of LCA on Wikipedia: “The lowest common a...
分类:
其他好文 时间:
2015-08-13 18:15:37
阅读次数:
158
模拟考试的时候暴搜,结果写丑了,分都不分
下来啃了一下题解,发现要用到一个叫做倍增的东西,还没有学过。但是老师说的,没有那个东西,写暴力也有30~40分。。。
我觉得最大生成树还是很好理解的,因为我们要求的是图中任意两个点之间的路径上,使得边权的最小值尽量大。因此首先求最大生成树。
当我们得到最大生成树后,要求两个点之间边权最小值,我们可以首先找到他们的公共祖先。这里有一篇写得很详细的代码,...
分类:
其他好文 时间:
2015-08-11 23:33:57
阅读次数:
265
题目地址:节点编号为:1-->n代码:#include #include #include #include #include #include #include #include #include #include #define N 10000+10using namespace std;vec...
分类:
编程语言 时间:
2015-08-11 22:55:35
阅读次数:
131