【题解】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 的一个区间/前后缀并,中位数也是好找的,就是区间中点。
然后一直倍增直到重心大小对了就好了。
浙公网安备 33010602011771号