P9603 [IOI2023] 山毛榉树 题解
YeahPotato · · 题解
提供一个自己做的思路。用到的性质比其他正解弱,但更容易想。
考虑单棵树的判定。初步读题后会得到两个性质:
- 一个点的儿子边权不能重复。
- 设所有权为
i 的边的较浅端点形成集合S_i ,则所有S_i 形成一个“连续包含链”的结构。或者也可以从一个点的所有儿子边权角度等价描述。
这些性质都是 beautiful subtree 的必要条件,并且对于想象力不够丰富的选手来说,难以加强至充要条件。既然必要角度不行,那考虑充分角度——同样是一个很常见的套路,我们希望找到一种排列的构造,使得对于 beautiful subtree,构造出来的排列必定是 beautiful permutation;如果不是 beautiful subtree,那就不用考虑了。于是剩余要做的就是验证一遍题意中的条件即可。
归纳易证排列中越靠前的点子树 size 越大,因此先按 size 排序;如果两棵子树 size 相同,那么也归纳易证它们同构,因此它们的相对顺序只取决于它们各自父亲的相对顺序。因此可以在按 size 排序后再扫一遍,size 相同的按父亲在序列中的位置排序。这样可以做到
对于原问题,一个有意思的猜想是,一棵 beautiful subtree 的子树也都是 beautiful 的。考试中当然可以直接 assert 然后交上去看看,不过这也是好证的。考虑
剩下的就是思想类似 [WC2018] 即时战略 的二分了。取出重链,在上面二分,然后往轻儿子递归。硬二分是