图论 LCA
文章平均质量分 53
oranges_c
落寞是岁月的痕迹
展开
-
【POJ1330】Nearest Common Ancestors(LCA)
推荐参考解释:http://hihocoder.com/contest/hiho15/problem/1 LCA模板题 这里用的是tarjan的离线算法#include <cstdio> #include <cstring> #include <iostream> #include <vector> #include <algorithm> #include <map>原创 2016-11-03 18:29:36 · 255 阅读 · 0 评论 -
【HDU6031】Innumerable Ancestors(二分+LCA)
题目链接题目大意: 给你n个点树,m个查询 每次查询给出两个点集A,B。 求x∈A,y∈Bx\in A,y\in B 使得lca(x,y)的深度最大lca(x,y)的深度最大倍增lca相关知识 用倍增法处理出lca 然后对每个查询二分深度 处理出A集合的点在二分深度的祖先集合 然后判断B集合里是否存在一个点的祖先在上述集合里#include <bits/stdc原创 2017-05-11 21:52:31 · 1043 阅读 · 0 评论 -
【POJ1986】Distance Queries(lca的应用)
题目链接题目大意: 给你n个点,m条边(是一颗树 q个查询。 每个查询给出两个点,求两点的距离。感觉上树链剖分也可做,不难但是写起来麻烦。这里用倍增lca来做。代码比较好写。(其他lca的写法也可以的 两点xx,yy的距离就是xx到根的距离+yy到根的距离-两倍的lca(x,y)lca(x,y)到根的距离#include <cstdio> #include <iost原创 2017-05-11 22:01:12 · 390 阅读 · 1 评论 -
LCA小结。
对于LCA有三种算法。 第一种,暴力搜索。 对于数据很小的题可以这样写。 先标记其中一个人的所有祖先,再从第二个人开始往上,向他的父亲搜索,直到搜索到第一个被标记的人,这个人就是他们两个人的最近公共祖先。第二种,基于tarjan的离线算法。是将所有的查询都整理在一起,在去搜索判断,运用并查集找到最近公共祖先。 整理好所有的查询。 从根节点开始搜索。 如果有儿子一直原创 2016-11-03 18:39:39 · 352 阅读 · 0 评论 -
之江学院第0届校赛-H.qwb与学姐(最大生成树+lca)
题目链接一开始看到这题,想的是最大生成树+树链剖分+线段树。时间复杂度大概是O(mlogm+n+nlogn+klogn)O(mlogm+n+nlogn+klogn) 然而貌似是因为线段树的常数大然后炸了。。(不会zkw线段树,待学。orz然后题解说的是最大生成树+倍增法lca 就是创建一个数组 dis[i][j]:=表示i点跟它的第2j个祖先之间路径的最小值dis[i]原创 2017-06-03 13:54:47 · 423 阅读 · 0 评论