Diameter
CF1919H Tree Diameter
某人在换根时根还设置成 \(1\) 交了整整 \(11\) 发,我不说是谁。 先考虑一下 \(2\) 询问的实际用途,因为我们可以用它来确定深度,根据树上交互题的常见技巧,我们通过这种方式确定了一个拓扑序,只要能在拓扑序的前缀中快速查询一个点的父亲,就可以求出这棵树。 考虑先以一条边为根,那么其会有 ......
CF1804F Approximate Diameter 题解
题目链接 点击打开链接 题目解法 很有意思的题,但不难 首先一个显然的结论是:算着边的加入,直径长度递减 第一眼看到误差范围是 2 倍,可以想到二分 可以观察到如果取答案为 \(\frac{n}{2}\) 可以覆盖到 \(\frac{n}{4}\)(上下取整不重要),那这样每次可以把值域范围缩小 4 ......
Maximum Diameter 题解
[Maximum Diameter](https://www.luogu.com.cn/problem/AT_abc290_f) ### 题目大意 定义长度为 $n$ 的序列 $a$ 的权值为: - 所有的 $n$ 个点的第 $i$ 个点的度数为 $a_i$ 的树的直径最大值,如果不存在这样的树,其 ......
Codeforces 1458F - Range Diameter Sum
先考虑直径的一些求法:最普遍的想法肯定是从点集中任意一个点开始 DFS 找到距其最远的点,再一遍 DFS 找到距离你找到的那个点最远的点。但是放在这个题肯定是不太行的。因此考虑一种更常用的求法:**合并**。更直观地说:我们定义树上一个圆 $(x,r)$ 表示距离 $x$ 点 $\le r$ 的所有 ......
Atcoder ABC221F Diameter set
不难。 第一步肯定是求出直径 $d$。 然后能发现 $d\bmod 2 = 0$ 时很好求。 可以先任意找到一条直径,再找到这个直径的中点,则容易知道以这个中点为根,其中的每个子树的节点与中点经过的边数最大值为 $\frac{d}{2}$。 所以能够得到每个子树内选两个点距离最大值也为 $d - 2 ......
tree_diameter
public static int height(BinTree T) { if (T == null) { return -1; } else { return Math.max(height(T.left), height(T.right)) + 1; } } /** Return the di ......
CF1499F - Diameter Cut
题意:对于一棵树,有多少种删去边的方式,使得删边之后得到的森林中,每棵树的直径都不超过 $k$。 见数据范围和直径知 $dp$,设 $dp_{i,j}$ 表示当前考虑子树 $i$,所有直径不大于 $k$,且从 $i$ 往下最深深度为 $j$ 的方案数。 同时注意每棵树转移到祖先的时候,$j$ 都要自 ......