9.1 杂题选讲

Bot Friends 2

首先,我们将一个开始的点和它最终合并的位置连边,最终大致形成一个类斯坦纳树的形状

然后你发现总是存在一个最优解使得不存在一个点自己离开了自己所在的点,而还有别的点在自己的位置上合并。(否则可以考虑至少将一个点替换为这个点)

因此,我们的斯坦纳树就是一堆路径的集合。

因为最后我们还是要合成一个点的

所以我们最后做出的是一棵树,每个点合并的额外代价都是 \(siz_i-1\),只有根节点不减

因此我们可以将这个代价给到每条边上,现在每条边的代价是 \(a_i+dis(i,j)+a_j\),最后统一减去一个 \(sum_a\),加上 \(\min_a\) 就好了(注意到因为一开始每个点上都有机器人,所以每个点都在这张图上,因此我们最终求出来的那棵树上一定有最小的那个点,并且不会影响到我们求解的正确性)

于是我们可以正式开始建图了。

我们在原图的每个点上连一个边权为 \(a_i\) 的叶子,现在这点的 dis 就对完了

所以现在我们要在一个以这些点的 dis 为边,做出一个完全图,然后在这个上面跑一个最小生成树

但是你考虑到这个复杂度是炸掉的

现在我们有一个结论:

我们以所有新点为源点跑一个最短路,然后将每个原图中的点标记为第一个碰到它的点,对于原图中的边,只有在它两边所属的点不同的情况下它才可以算作关键边,连接了两边的标记。只有这些关键边所代表的路径才能出现在最终的图中。

证明待补。

题目待补

这道题感觉更加简单一点

先放 0,奇环剩两格,还有奇环再放一个,剩下的 0 等价于 2,然后 1 放到现在收益为 2 的位置

posted @ 2025-09-05 22:02  hushuyang  阅读(16)  评论(0)    收藏  举报