[贪心] [欧拉回路] P6628 丁香之路
前言
题目链接
神仙贪心题,初看根本没有头绪QwQ
思路
首先把
最简单情况:图连通,且有欧拉路
如果图连通、但无欧拉路怎么办?有两个选择:建新边使欧拉路存在和同一条边重复走。
注意到
由这一点可知,题面的“至少走一次”等价于“恰好走一次”。那么就是个欧拉路径问题。
不过直接求欧拉路径不好做,转换下试试:“
(虚边的意思就是这条边存在但是边权为
然后不需考虑连通性,可以把度为奇数的点抽出来并排序,两两连边。由绝对值性质知这样做一定最优。
(无向图中一定有偶数个奇点)
那么图不连通的情况呢?直接建边跑最小生成树即可,为了不影响奇偶需乘二。
不过这样做边数是
为什么这样连边一定有解?还是因为绝对值的性质!首先易知任意两连通块一定有路径可达(考虑绝对值的几何意义)。
又因为
以为这就结束了?上述贪心策略还不够贪,还需将“两奇点
提交记录
一些思考
首先把所有有关点放到数轴上,
有没有可能,不连接两两相邻的奇点,而是把连通性也考虑进去更优呢?
(也就是连接的边有相交)
我认为贪心策略的正确性,与“连接两奇点之间的所有点”这一做法有关。因为这样做后,容易发现
考虑四个奇点
换句话说,一定存在一种“线段互不相交”的花费不多于“线段相交”的花费,并且连接的连通块更多。上述贪心策略的正确性得以保证。
总结
- “至少经过一次”问题有时可以转化为欧拉路问题。
- 欧拉路径问题可以通过连接虚边转化为欧拉回路问题。
- 遇到不会做的图论题时,从边权入手或许可行。