Lca

LCA(学习笔记)

LCA指的是最近公共祖先,更具体的意义就不讲了. 求解LCA的方法有很多,这里讲解向上标记法,树上倍增法,tarjan求LCA. 向上标记法 1 从x向上走到根节点,并标记所有经过的节点. 2 从y向上走到根节点,第一次遇到的已标记的节点就是x和y的LCA. 但不难发现,这个算法只适用于求一个点和一些点之间的LCA,不支持询问任意两个点的LCA.而且对于每...

[2020牛客暑期多校训练营(第一场)虚树 Infinite Tree]

2020牛客暑期多校训练营(第一场)虚树 Infinite Tree 题解参考博客:https://blog.nowcoder.net/n/df889adfaf824d50ad2291f4d2eb04a2?&toCommentId=6480068 题目大意: 定义 (mindiv(n)) 是 (n) 最小的大于1的约数,对于每一个 (i),(1&l...

LCA(最近公共祖先)离线算法Tarjan+并查集

本文来自:http://www.cnblogs.com/Findxiaoxun/p/3428516.html 写得很好,一看就懂了。 在这里就复制了一份。 LCA问题: 给出一棵有根树T,对于任意两个结点u,v求出LCA(T, u, v),即离根最远的结点x,使得x同时是u和v的祖先。      把LCA问题看成询问式的:给出一系列询问,程序应当对每一个询...

LCA问题【RMQ+Tarjan】

LCA-求树上两点最近公共祖先问题 lrj的紫书上提供了一种将LCA问题转化为RMQ问题的方法,即dfs一次处理出一个序列,first(u)代表u第一次出现的下标,则对于u,v的最近公共祖先的下标即为RMQ(first(u), first(v))。 LCA->RMQ(在线处理): 1 #include<bits/stdc++.h> 2...

可持久化 trie 的简单入门

可持久化 $trie$ ....又是一个表里不一的东西..... 可持久化 $trie$ 的介绍: 和主席树类似的,其实可持久化就是体现在前缀信息的维护上(搞不懂这怎么就叫做可持久化了...) $trie$ (字典树)大家应该都知道,就是一棵用来做字符串匹配的树, 但是!在这里,可持久化 $trie$ 就是完全不一样的东西了... 基本上(我做过的题),可...

关于树上差分

关于树上差分,可参见网友一博客 https://www.luogu.com.cn/blog/sincereactor/shu-shang-ci-fen-di-liang-zhong-sai-lu 这里我也来说两句: 树上差分分为两个(就像树上dp一样) 1.点差分 2.边差分 1.点差分: 二.关于点的差分(如将路径上的所有点权值加一,求最后点的权值) 此...