LCA
_7许
%
展开
-
P3128 [USACO15DEC]Max Flow P【树上差分_点差分(LCA)】
P3128 [USACO15DEC]Max Flow P 题意 一颗树,树上每个结点初始化点权为0. 有k次操作,每次操作对路径<u, v>上每个结点都进行加1操作。问:k次操作全部完成后,点权值最大的结点的点权为多少? 思路 树上差分之点差分模板 无根树转有根树 对路径<u, v>操作时,++sum[u], ++sum[v], -- sum[lca(u, v)]...原创 2020-03-01 16:17:37 · 309 阅读 · 0 评论 -
Nearest Common Ancestors 【POJ - 1330】【LCA模板】
在线离线都有~原创 2020-02-19 21:25:36 · 127 阅读 · 0 评论 -
How far away ?【HDU - 2586】【LCA - Tarjan离线】
HDU - 2586 题意:给一颗无根树,求两个结点间的最短路径长度。 思路: 因为是在树上求最短路,那么肯定是通过LCA的那条路径为最短。 那么我们应该怎么求路径长度呢? 我们以任意结点为根,将无根树转化为有根树,然后dis[ i ]表示结点 i 到根结点的最短距离,所以dis<u, v> = dis[ u ] + dis[ v ] - dis[ LCA(u, v) ] *...原创 2020-02-19 19:36:46 · 115 阅读 · 0 评论 -
P3379 【模板】最近公共祖先(LCA)【离线算法Tarjan】
感觉离线求LCA就只是用了一个并查集而已,不知道为什么叫Tarjan了(明明Tarjan是用来求有向图Strong Connectivity的说) 来说说怎么用离线算法Tarjan来求LCA啦~ 首先我们将读入的查询和查询的序号存起来,因为是离线算法的嘛~而且要存双向的!(为什么看了下边就懂了的) 我们从根开始dfs遍历整棵树,如果搜到叶子结点u了,那么就看下u是不是需要被查询的结点,如果是...原创 2020-02-16 11:28:49 · 150 阅读 · 0 评论 -
P3379 【模板】最近公共祖先(LCA)【在线算法详解】
一、倍增LCA 对于结点u和v,不妨设deep[u]>deep[v] (1)、先向上跳u使得它们处于同一深度:deep[v]; (2)、然后再结点u和结点b一起跳,跳它们最近公共祖先。 这里所谓“跳”是指往上跳2的次幂的高度。设f[ u ][ i ]表示距结点u高度差为 2^i 的祖先。 f[ u ][ i ] = f[ f[ u ][ i - 1 ] ][i - 1],其中f[ ...原创 2020-02-14 21:41:34 · 286 阅读 · 0 评论