【题解】P17320 [ICPC 2018 Nanjing R] Cherry and Chocolate

https://www.luogu.com.cn/problem/P17320

\(x,y,z\) 表示依次选择的节点。

考虑 \(z\) 的策略一定是选择 \(y\) 的邻居中,子树最大的。注意要减去 \(x\) 重复贡献。
那么 \(y\) 自然想让 \(z\) 变小,这个东西就很像重心,每次我们往当前决策 \(z\) 走一步看会不会变小,会变小就走过去。
现在就是变成,每次去掉 \(x\) 的子树/子树补,求重心的最大子树大小。
这不就是 P5666 [CSP-S 2019] 树的重心 吗!!

复习一下:

  • \(siz_u\ge \frac{n}{2}\) 的节点构成一条祖先链,重心是最深的那个。
  • 按照 dfn 排序,则 \(a_{\left\lfloor\frac{n}{2}\right\rfloor+1}\) 一定是重心的子孙。

现在相当于取 dfn 的一个区间/前后缀并,中位数也是好找的,就是区间中点。
然后一直倍增直到重心大小对了就好了。

posted @ 2026-09-06 17:29  TallBanana  阅读(6)  评论(0)    收藏  举报