先留个坑 我回来了( 什么是 LCA 对于有根树T的两个结点u、v,最近公共祖先LCA(u,v)表示一个结点x,满足x是u和v的祖先且x的深度尽可能大。在这里,一个节点也可以是它自己的祖先。 以上, 百度百科中的定义, 不仅是你, 我也看不懂. 简单点说, 就是一棵有根树中两个节点的最近公共祖先, ...
分类:
其他好文 时间:
2021-07-02 15:51:34
阅读次数:
0
# pandas 查出全部的重复的数据 duplicate = res[res.duplicated(subset=[col])][col].tolist() fin_res = res[res[col].isin(duplicate)]# 当使用dupilcated方法查重时 只会查重重复的数据, ...
分类:
其他好文 时间:
2021-07-02 15:27:25
阅读次数:
0
缓缓加速 第二日,生成树与LCA 从上至下知识点对应为: 1-3、最小生成树(MST),prim或kruskal算法 4、求多颗最小生成树(或许这么称呼不太严谨),kruskal算法 5、最大瓶颈生成树(MBST),prim或kruskal算法 6、LCA,树上倍增 7、最大生成树+LCA,树上倍增 ...
分类:
其他好文 时间:
2021-07-01 16:51:09
阅读次数:
0
Solution lca+前缀和 快读不要忘写c= 复杂度 \(O(nk)\) Code #include<iostream> #include<cstdio> #include<cstdlib> #define ll long long using namespace std; const int ...
分类:
其他好文 时间:
2021-06-21 19:59:39
阅读次数:
0
如果按照题意模拟的话是肯定会超时的(题目都好心告诉你了),考虑优化。 我们发现对于两个串我们只用求它们的最长公共前缀即可。 如果将所有串建一棵$trie$,那最长公共前缀就对应到它们的结束节点在$trie$树上的$lca$。所以我们建好$trie$后只用遍历一遍所有节点看看它是几个串的$lca$即可 ...
分类:
其他好文 时间:
2021-06-19 18:47:32
阅读次数:
0
考虑枚举$T'$中两点的$lca$,之后要做的为最大化$dep_x+dep_y-dep_{lca(x,y)}\(,转化一下式子就是\)\frac {dep_x+dep_y+dist_{x,y} }{2}$. 那么我们考虑在边分树的每一个节点维护往左最大的$dep_x+dist_{a,x}$和往右最大 ...
分类:
其他好文 时间:
2021-06-16 17:38:43
阅读次数:
0
考虑先做一个$O(n^2) 的 dp$ $f[i][j]$表示在$i$的子树中,距离当前点为$j$的点数 $g[i][j]$表示在$i$的子树中,两个点$lca$的距离为$d$,他们的$lca$到$i$距离为$d - j$的点对数。 那么怎么转移? \(ans += g[i][0],ans += g ...
分类:
其他好文 时间:
2021-06-02 12:14:22
阅读次数:
0
原题链接 考察:思维 顺着LCA的标签而来,结果这题貌似没什么关系(甚至想半天没想出来( 思路: 我们发现每个子结点和父节点都差一个斐波那契数.对于样例的树可以表示成 (1) (2) (3) (4 5) (6 7 8) (9 10 11 12 13) 每个数字减去斐波那契数列中最大但严格小于自己的数 ...
分类:
其他好文 时间:
2021-05-24 05:34:36
阅读次数:
0
原题链接 考察:LCA+Tarjan 思路: 因为N<=1e5,所以上个算法N2 不适用.这里仍然是上道题的思路,枚举所有不在最小生成树的边.求出边两端点u,v.找到u,v在最小生成树的最大值d1和次大值d2.然后通过sum-d1(d2)+road[i].w求解答案. LCA优化的是求两端点之间的最 ...
分类:
其他好文 时间:
2021-05-24 04:51:20
阅读次数:
0
https://nanti.jisuanke.com/t/42586 题意: 给定以$1$为根的有向树,编号为$i$的点具有权值$v_i$,问树上存在多少有序对${x, y}$,设$LCA_{x, y} = z$,使得$x \neq z$,\(y \neq z\),$x$和$y$的树上距离不超过$k ...
分类:
其他好文 时间:
2021-05-04 16:27:17
阅读次数:
0