
最近公共祖先(LCA)
AKone123456
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Borrow Classroom----------------------------------思维(LCA)
解析: 满足条件的得认真找!!!!!!!!! 分为三种情况 设a1 为lca(a,1) 设bc 为lca(b,c) 设c1 为lca(c,1) 设ac 为lca(a,c) 第一种: lca(a,c)==1 那么如果 a1<bc+c1 输出YES 否则输出NO 第二种:ac<=bc 那么一定可以拦截 输出YES 第三种 lca(a,c)!=1,那么a1<=bc+c1 那么一定...原创 2020-04-08 15:17:06 · 169 阅读 · 0 评论 -
Tree Queries----------------------------------------思维(LCA)
题意: 给定一棵有根树,树根为1。再给出m个查询,每个查询有k个数。问能否找到一条链使得查询每个点到链的距离<=1 解析: 我们先找到这k个数中深度最大的节点,其余点依次和深度最大的节点(id)比较 如果 abs(depth[lca(id,x)]-depth[x])>1 那么输出NO #include<bits/stdc++.h> using namespace s...原创 2020-03-29 11:02:08 · 273 阅读 · 0 评论 -
E. 1-Trees and Queries--------------------思维(LCA)
Gildong was hiking a mountain, walking by millions of trees. Inspired by them, he suddenly came up with an interesting idea for trees in data structures: What if we add another edge in a tree? Then he...原创 2020-02-19 14:43:08 · 275 阅读 · 0 评论 -
LCA----------------------------------tarjan(离线做法)
时间复杂度:O(n+m) 给出 n 个点的一棵树,多次询问两点之间的最短距离。 注意: 边是无向的。 所有节点的编号是 1,2,…,n。 输入格式 第一行为两个整数 n 和 m。n 表示点数,m 表示询问次数; 下来 n−1 行,每行三个整数 x,y,k,表示点 x 和点 y 之间存在一条边长度为 k; 再接下来 m 行,每行两个整数 x,y,表示询问点 x 到点 y 的最短距离。 树中结点编号从...原创 2020-02-18 13:27:07 · 223 阅读 · 0 评论 -
LCA-----------------------------倍增做法
倍增法 fa[i,j]表示从第i个点,向上走2^j步所能走到的节点 0<=j<=logn depth[i]表示节点i的深度 depth[i]=第i个点到根节点长度+1 步骤 (1)先将两个点跳到同一层 (2)让两个点同时往上一直跳,一直跳到最近公共祖先下一层 预处理: O(logn) 查询: O(logn) 来个模板 给定一棵包含 n 个节点的有根无向树,节点编号互不相同,但不一定...原创 2020-02-17 22:15:23 · 230 阅读 · 0 评论