P5912 [POI 2004] JAS 题解
P5912 [POI 2004] JAS 题解
构造点分树的方式:每一次在每一个连通块里选取一个点作为分治中心。
题意可转化为一棵树的最浅点分树最大深度。
转化题意
等价于考虑每个点的高/深度,为了方便,定义一个点的高度为它距离子树里最深的点的距离,如果我们给每个点分配了一个合法的高度,那么答案就是最大的高度。
可以发现一个分治的时刻,每一个连通块里面不能有两个以上高度相同的点,也就是说任意两个高度为 \(x\) 的点之间的路径上不可以所有点的高度都 \(\le x\),这是一组合法高度的充要条件。
贪心
考虑自底向上贪心,对于一个点 \(u\) 假设其所有子树内部点已经确定,定义 \(vis_u\) 表示从 \(u\) 开始不经过 \(> u\) 的点可以到达 \(u\) 子树里面哪些高度的点,因为点分树的性质保证了高度是 \(O(\log n)\) 的,所以可以状压这个状态。
\(u\) 的高度 \(lab_u\) 需要满足:
-
\(vis_u\) 不包含 \(lab_u\),不然就出现了不合法点对
-
\[lab_u> \max_{x, y\in son_u, i\in vis_x\cap vis_y} i \]
不然会出现来自 \(x\) 和 \(y\) 子树某对点的不合法点对。
只要满足了这两个条件,\(lab_u\) 就是合法的,且 \(lab_u\) 会选择最小的合法的数来使 \(vis_u\) 字典序最小,可以证明这样是最优的。

QwQ
浙公网安备 33010602011771号