先留个坑 我回来了( 什么是 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
常见算法 算法与数据结构是面试考察的重中之重,也是日后刷题时需要着重训练的部分。 简单的总结一下,大约有这些内容: 算法 - Algorithms 1、排序算法:快速排序、归并排序、计数排序2、搜索算法:回溯、递归、剪枝技巧3、图论:最短路、最小生成树、网络流建模4、动态规划:背包问题、最长子序列、 ...
分类:
编程语言 时间:
2021-06-22 18:19:06
阅读次数:
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
思路: 整个图可以看作是一个“环”和“挂”在上面的若干棵树组成的。首先找到这个“环”,然后分别计算上面每棵树包含的节点数,再计算同一棵树内及不同的树之间的路径数即可。可以使用图论算法也可以不使用。参考了https://codeforces.com/blog/entry/84984和https://w ...
分类:
其他好文 时间:
2021-06-08 22:39:19
阅读次数:
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
思路: 图论。参考了https://codeforces.com/blog/entry/71080。 实现: 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const ll INF = 0x3f3 ...
分类:
其他好文 时间:
2021-05-24 08:39:17
阅读次数:
0