牛客提高模拟赛第二场 T3

提供一个 C 题的做法。

考虑怎么把答案最大化。对于当前点 \(u\) ,我们可以选择一个子树进行处理,然后再选择 \(u\) 点本身,最后还可以再选一个子树处理。

我们对于每个点维护一个 multiset 表示当前节点进行处理可以增加序列的长度。每次搜索到一个点 \(u\),我们把它所有子节点的 multiset 合并,取出最大的两个值 \(x,y\),放入 \(x+y+1\)

启发式合并即可维护。

posted @ 2021-10-07 18:18  cmll02  阅读(93)  评论(0编辑  收藏  举报