"传送门" 一道憨憨的 Lca 模板题。 Code ...
分类:
其他好文 时间:
2020-02-19 22:25:52
阅读次数:
70
``` #include #define FOR(I, A, B) for (int I = (A); I = (B); --I) #define DB(A) cout #define LL long long using namespace std; const int maxn=2e5+10; ... ...
分类:
其他好文 时间:
2020-02-17 17:40:00
阅读次数:
50
由于可以走重边,所以任意一条路径长 + 2 仍然对应至少一条合法路径 很显然我们有 $3$ 种基本路径 不经过 $(x,y)$ 经过 $x \to y$ 经过 $y \to x$ 假设某个基本路径的答案是 $d$,询问是 $k$,如果同时满足以下条件,则该基本路径可以作为答案 $d \leq k$ ...
分类:
其他好文 时间:
2020-02-17 16:01:00
阅读次数:
57
"E. 1 Trees and Queries" 该题需要用 lca 进行优化。 在树中求两点间的距离的方法为: ...
分类:
其他好文 时间:
2020-02-17 13:56:46
阅读次数:
59
题目链接 题意如题 做法 先做一遍最小生成树 枚举添加每一条非树边的情况,每一次构成一棵基环树,在环上找一条最长边(如果等于该非树边就用环上的严格次小边) 倍增LCA,倍增预处理的时候顺便维护严格次大值和最大值(注意细节) (如果是非严格次小生成树则只需要维护最大值即可) 代码 #include < ...
分类:
其他好文 时间:
2020-02-17 12:41:29
阅读次数:
88
简述题意,给你一课最小支撑树,对每个询问,在原有的路径上增加x-y,问a-b是否有路径长度为k的路,每条路每个点可以重复使用 由于是最小支撑树,我们可以用LCA来快速判断每个点之间的距离,那么现在就要判断情况,假设从原有的路上,a-b的距离为d,d=k时显然成立,当d<k时,若(d-k)%2=0也成 ...
分类:
其他好文 时间:
2020-02-16 14:55:36
阅读次数:
74
"Problem Link" $dis(u,v)$ 表示 $u$ 到 $v$ 在原来那棵树上的距离,可以用倍增lca $O(\log n)$ 求 从 $a$ 走到 $b$ 不走新边,那么距离 $len_1=dis(a,b)$ 因为树上的边可以随便走,所以只要 $len_1$ 与 $k$ 同奇偶并且 ...
分类:
其他好文 时间:
2020-02-16 12:56:30
阅读次数:
74
```cpp const int MAX = 100000; vector G[MAXN + 5]; int dep[MAXN + 5], fa[MAXN + 5][20 + 1]; void dfs(int u, int p) { dep[u] = depth[p] + 1; fa[u][0] =... ...
分类:
编程语言 时间:
2020-02-16 12:55:01
阅读次数:
72
LCA(least common ancestors)最近公共祖先 指的就是对于一棵有根树,若结点z既是x的祖先,也是y的祖先(不要告诉我你不知道什么是祖先),那么z就是结点x和y的最近公共祖先。 定义到此。 那么怎么求LCA? 对于朴素思想,就是我要一步一步往上爬。。一步一步走。先把结点x和y整到 ...
分类:
其他好文 时间:
2020-02-15 19:20:38
阅读次数:
91
1 """ 2 Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. 3 According to the definition of LCA on Wikipedia: ...
分类:
其他好文 时间:
2020-02-13 22:33:56
阅读次数:
67