很好的参考资料:http://taop.marchtea.com/04.04.html 下面的配图和部分文字转载于此文章
离线算法就是指统一输入后再统一输出,而不是边输入边实时输出。Tarjan算法的复杂度为O(N+Q),Q为询问的次数.
由于是离线算法,所以要保存输入的信息,次序问题。
若两个结点u、v分别分布于某节点t 的左右子树,那么此节点 t即为u和v的最近公共祖先。更进...
分类:
编程语言 时间:
2014-12-09 21:27:58
阅读次数:
366
题目大意:给出一棵树,有n个问题,询问在[l,r]区间内的每个节点i与z的最近公共祖先的深度之和。
思路:不会,然后看了题解,之后发现自己智商严重不足。
看到数据范围就知道一定要离线处理,就这个离线处理我估计以我的智商不看题解是肯定想不出来的。。
考虑这样的一种暴力,我们把 z 到根上的点全部打标记,对于 l 到 r 之间的点,向上搜索到第一个有标记的点求出它的深度统计答案。观察到,...
分类:
其他好文 时间:
2014-11-28 18:22:08
阅读次数:
217
Description给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。有q次询问,每次询问给出l r z,求sigma_{l#include#include#include#i...
分类:
其他好文 时间:
2014-11-28 18:09:06
阅读次数:
132
tarjan求lca离线算法的简洁模板,树用孩子兄弟表示法表示,代码很短。...
分类:
其他好文 时间:
2014-11-25 16:27:13
阅读次数:
258
最小公倍数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 35272 Accepted Submission(s): 19682
Problem Description
给定两个正整数,计算这两个数的最...
分类:
其他好文 时间:
2014-11-24 08:42:05
阅读次数:
124
DescriptionInputOutputSample Input6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 6 6 6 Sample Output 5 2 2 5 4 1 6 0 HINT社会实践完滚回来想刷水结果被水题虐了先算出两两的lca,一定有两个l...
分类:
其他好文 时间:
2014-11-23 14:23:03
阅读次数:
265
题目大意:给定一个n个点m条边的无向连通图,k次询问两点之间所有路径中最长边的最小值
Kruskal+倍增LCA做法见http://blog.csdn.net/popoqqq/article/details/39755703
LCT做法见http://blog.csdn.net/popoqqq/article/details/39929277
Kruskal重构树真是强大……一不小心手滑就R...
分类:
Web程序 时间:
2014-11-23 13:13:26
阅读次数:
198
题意: 给出一些名字,名字间有父子关系,有三种操作:1.按祖先到后代,兄弟间按字典序由小到大排序,然后输出2.求某个节点的兄弟节点有多少个,包括自己(注意,根节点的兄弟节点是1)3.求节点a和b的公共祖先 (注意:如果公共祖先是a或b,必须要输出其父亲,与传统的LCA可以是自己不同)解法: 先把整棵...
分类:
其他好文 时间:
2014-11-09 23:32:59
阅读次数:
289
题意给一颗树,再给一个查询两点之间的最近公共祖先。#include#include#include#include#includeusing namespace std;const int maxn = 111111;struct edge{ int to; int next;}e[maxn ...
分类:
其他好文 时间:
2014-11-08 16:42:57
阅读次数:
214
题意:根目录能一次到达其任意子目录,子目录返回上一层目录需要一次,给出目录关系,问从某个目录到某个目录最少要多少步。操作数 ,就是起点到最近公共祖先的距离。然后讨论下,如果最近公共祖先等于终点,那么答案就是起点到祖先的高度差 ,否则就是高度差加一 。#include#include#include#...
分类:
其他好文 时间:
2014-11-08 16:42:03
阅读次数:
239