题解:P12753 [POI 2017 R3] 披萨配送员 Pizza delivery

· · 题解

题解:P12753 [POI 2017 R3] 披萨配送员 Pizza delivery

题目大意

不难发现这是让我们来进行一颗树的遍历,然后可以有 k 次机会可以进行瞬移操作。问最少遍历所有点的最小代价需要多少。

分析

不难发现我们如果没有瞬移操作,那么显然总代价为路径长度总数的两倍。

手玩后发现,我们在叶子结点瞬移最优(显然)。在叶子结点瞬移会省去该结点 u 到他的祖先结点 v(该结点 v 有不止一个儿子)的距离,同时多走一次祖先结点到根结点的路径。

那么,我们对每个结点作为被找到的祖先结点进行操作即可。将该结点最长链的长度省掉一定是最优的。

那么对于每一个节点,我们将他产生的贡献存下后进行排序或用数据结构维护,取出前 k 大的后在全局答案中减掉就是最小代价。