P17320 [ICPC 2018 Nanjing R] Cherry and Chocolate
P17320 [ICPC 2018 Nanjing R] Cherry and Chocolate
考虑固定第一个点 \(a\) 和第二个点 \(b\),答案即树以 \(b\) 为根,挖掉 \(a\) 及其子树后,最大子树的大小。
第二步时,后手会取最小化上述值的 \(b\),也即子树的重心。
那么一个 \(O(n^2)\) 的方法是枚举 \(a\),以 \(a\) 为根处理每个子树的重心。
一个很巧妙的观察是:若 \(a\) 对应最优解为 \(b_0\),则更优的 \(a'\) 只可能位于 \(a\) 的 \(b_0\) 方向的子树中。

考虑若 \(a'\) 不往 \(b_0\) 方向移动,相当于以 \(b_0\) 为根的树的某棵子树大小增加,这样答案一定不优。
那么类似点分治的方法在树上二分即可做到 \(\mathcal O(n\log n)\)。
这个 trick 在 此题 中亦有提及。其共性是当我们取任意一点,可以 \(\mathcal O(n)\) 的判定欲求点位于根的哪个子树内。
这提供了某种类似二分的单调性/有界性,所以称作 树上二分(?
本文来自博客园,作者:CuteNess,转载请注明原文链接:https://www.cnblogs.com/CuteNess/p/22874870

浙公网安备 33010602011771号