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\) 方向的子树中。

alt text

考虑若 \(a'\) 不往 \(b_0\) 方向移动,相当于以 \(b_0\) 为根的树的某棵子树大小增加,这样答案一定不优。

那么类似点分治的方法在树上二分即可做到 \(\mathcal O(n\log n)\)


这个 trick 在 此题 中亦有提及。其共性是当我们取任意一点,可以 \(\mathcal O(n)\) 的判定欲求点位于根的哪个子树内。

这提供了某种类似二分的单调性/有界性,所以称作 树上二分(?

posted @ 2026-09-07 15:15  CuteNess  阅读(5)  评论(0)    收藏  举报