【Codeforces Round #476 (Div. 2) [Thanks, Telegram!] E】Short Code

【链接】 我是链接,点我呀:)
【题意】


在这里输入题意

【题解】


先建立一棵字典树。
显然,某一些节点上会被打上标记。
问题就转化成求所有标记的深度的和的最小值了。
(标记可以上移,但是不能在同一位置

则我们用树形动规的方法。
从底往上递归处理。
考虑以x为根的一棵子树。
如果这个节点被打上了标记。
那么就直接将答案累加上这个节点的深度。

如果没有打上标记。
那么就把这个子树下面某个深度最高的点移动到这个位置上来。
显然这样贪心做是最优的。

用multiset维护某个子树下面的深度最大值。
然后用启发式合并合并multiset就好。
O(能过)

【代码】

在这里输入代码

猜你喜欢

转载自www.cnblogs.com/AWCXV/p/8966444.html