P4843 清理雪道:最小路径覆盖问题的变种
有两种方法:
-
最大费用流。
把网络流作为贪心的工具。
建图:原图中的点也当作新图中的点。对于一条原图的边,新图中建两条:一条容量
费用 ,一条容量 费用 。(深海机器人的方法) 向所有入度 的点(还有出度 向 )连容量 费用 的边。跑最大费用流。这样就视作每一条边第一次走的时候会贡献
,以后不再贡献。在跑最大费用流的时候,如果发现增广完当前费用等于原图中的边数,则退出增广,答案为当前增广的轮数。为什么正确?有没有可能走了反边,增广次数比答案多?
不可能。因为如果有反边,一定是费用
,但是我们有容量 费用 的边。 -
有源汇上下界网络流。
建图:
。 -
二分图。(这个复杂度慢了,但是正确)
跑 Floyd 传递闭包,建出
的闭包 (若 在 中可达 , 中有边 )然后在
上跑最小路径覆盖。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!