Exp10re
2024-11-17 19:44:30
感谢此题送我上 M。我喜欢你。
正难则反。
考虑原操作的逆操作:选中一个节点以及其若干儿子,创造一个新节点,将这些儿子的父亲设为该节点,然后将该节点的父亲设为该节点。
容易发现,存在一种方案对原树使用若干次这种操作之后将其变为一棵二叉树,并且在所有由其生成的二叉树中深度最小的一颗的深度即为使用正向操作能生成原树的满二叉树的最小深度,并且可以证明在这种意义下逆操作仅选择两个点一定最优。
考虑如何得到这个深度:注意到其具有局部最优性,考虑树形 DP。
具体的,记
转移时,将
要使得这个数最小考虑贪心:将数列中的数加入小根堆中,每次取其最小的两个进行合并,考虑到小的数要尽可能被多合并,可以发现这么做一定最优。