雨濛草原

我为什么要来这

花了钱找虐受,可真是够抖M的呀

不正经の题面:

作为钦钦(雨濛)草原最绿的男人,杨某针每天都要开车巡视钦钦草原一圈。

钦钦草原由 n 个城市组成, m 条双向道路连接着它们。经过第 i 条道路要花费的
时间是 \(2^i\)

杨某针想要经过每条道路至少一次,在此基础上他想最小化他花费的时间。但作为
曾经 \(CTSC\)\(Cu\) 选手,他并不能很快地计算出这个问题。所以他向你求助


被虐的时候突然在网上找到了中国邮递员,然而并不会

然后跟着省队大佬一起听,也是一脸懵逼

最终在_\(rqy\)的帮助下,勉强入了门($ ORZ_{orz} $一波

原话:

;



分析一下题目,就能发现是一个关于欧拉回路的题

根据题目,我们先要讲所有边先遍历一遍(先不考虑重复走)

然后发现,每个点的度数有基有偶。

然后我们考虑添加一些边,讲每个点的度数都补为偶数。

而我们补上去的那些边从哪里来呢? 就是那些重复走的边。

现在问题又来了。

如何确定哪些边是要重复走的呢?

可别忘了,这个题中的边权是\(2^i\)次方。

只要选了一个大的,及时将所有比他小的边权都选上,也没有大的大

所以,我们就可以贪心的做。

每次选最小的边,将他作为重复边。

这也就用到了\(\mathfrak{MST}\)

补重复边时,用生成树中的边补就可以辣!!!!。


算fa♂流程:

  1. 读入数据。同时记录每个点的度数
  2. 生成一颗树
  3. dfs,计算每个子树的儿子节点的度,若不是偶数,用生成树中它与它儿子相连的边将度数补回来。
  4. 输出

End....

猜你喜欢

转载自www.cnblogs.com/Lance1ot/p/9160704.html