LCA_Tarjan 参考博客:https://www.cnblogs.com/JVxie/p/4854719.html LCA的Tarjan写法需要结合并查集 从叶子节点往上并 LCA_倍增 参考博客:https://www.cnblogs.com/zhouzhendong/p/7256007.h ...
分类:
其他好文 时间:
2019-08-03 01:03:35
阅读次数:
108
DAG建立支配树 1. 原图T的基础上建立TR 2. 将T进行拓扑排序(若T初始有多个入度为0的结点可以先用一个虚拟根将他们链接起来) 3. 顺序扫描拓扑排序,假设当前点x,在TR中,x的祖先的支配点已经建立好,所以找到x的所有直接祖先的lca就是x的支配点f。在图D中将f x连边 有向图支配树建立 ...
分类:
其他好文 时间:
2019-08-02 10:50:09
阅读次数:
363
这个有两种方法: 一、倍增 就是维护一个节点的第$2^0,\ 2^1,\ 2^2\ ...$层父亲,这样的话我们在后面查询的时候就可以直接“跳”着找。 第二行相当于将$dep(x) dep(y)$的值做 二进制拆分 。 跳到同一深度之后,如果两个节点已经跳到同一个位置,就直接退出。 否则,就要继续 ...
分类:
编程语言 时间:
2019-08-01 16:01:55
阅读次数:
101
LCA倍增法 模板:luogo P3379 【模板】最近公共祖先(LCA) 今天讲的时候有点跑神,现在卑微地来补习(菜) LCA指的是最近公共祖先(Least Common Ancestors)。 最简单的算法无疑是从两个点一个个往上走,出现的第一个两个点都走过的点即为两点的LCA。 但是时间很长。 ...
分类:
其他好文 时间:
2019-07-31 23:38:45
阅读次数:
110
LCA(最近公共祖先) LCA,Lowest Common Ancetors,即最近公共祖先。 百度百科定义:“对于有根树T的两个结点u、v,最近公共祖先 表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。” 什么是LCA? 对于一些朋友来说百度百科式的介绍不是很友好,我们在这里形象实际地说明 ...
分类:
其他好文 时间:
2019-07-31 13:09:54
阅读次数:
61
不难知道: 1、LCA(a, b) 属于 [a, b] 2.、如果a, b的公共祖先是a||b,那么我们可以知道,先出现的结点一定在上面,后出现的结点一定在下面,初始序列中a,b先出现的那个就是公共祖先。 3、如果a, b的公共祖先是c, 那么我们只需要找序列中值位于a,b之间的第一次出现的元素即可 ...
分类:
其他好文 时间:
2019-07-31 13:00:55
阅读次数:
87
题目链接:https://www.luogu.org/problem/P3379 题目大意: 给一棵以s为根的无向树,回答m个询问,回答出a和b最近的公共祖先。 解题报告: 倍增LCA的模板题,用一个数组 f [i] [j]表示i结点的第$2^{j}$个祖先。显然,一个点的祖先是f[i][0],对于 ...
分类:
其他好文 时间:
2019-07-30 12:53:08
阅读次数:
69
两个子任务真的是坑……考试的时候想到了60分的算法,然而只拿到了20分(各种沙雕错,没救了……)。 算法1: 对于测试点1,直接n遍dfs即可求出答案,复杂度O(n^2),然而还是有好多同学跑LCA/最短路…… 期望得分10; 算法2(搬运题解,因为这个我没有想到……): t=1的数据最直接的想法是 ...
分类:
其他好文 时间:
2019-07-28 21:27:10
阅读次数:
149
link $solution:$ 树上莫队模板题,树上莫队计算贡献后是除去 $u,v$ 的 $lca$ 的,简单用前缀和维护即可。 因为是待修莫队,块大小为 $n^{\frac{2}{3}}$ 时最小,时间复杂度 $O(n^{\frac{5}{3}})$ 。 #include<iostream> # ...
分类:
其他好文 时间:
2019-07-28 19:29:35
阅读次数:
88
基本算法 位运算 枚举 贪心 递归 分治 递推 构造 模拟 数据结构 简单数据结构 树形结构 线段树 树状数组 字典树 伸展树 左偏树 动态树 lca&rmq 划分树 SBT 字符串 kmp AC自动机 后缀数组 最小表示法 其它 并查集 散列表 单调栈 块状链表 双向链表 离线分治算法 可持久化数 ...
分类:
其他好文 时间:
2019-07-27 09:39:46
阅读次数:
96