系列trick - 建图

对偶图

主体思想:平面图的割,等价于对偶图的路

例题:[BeiJing2006]狼抓兔子

网上有114514篇题解,这里不赘述

点变边

主体思想:点带点权,而要在点上实现一些在边上的问题,比如最小割点,将点 P 拆成 PiPo,在 PiPo 之间连边 valP,即可转化成边权。

例题:[BJOI2016]水晶

枚举三个不合法的点,用这个 trick 做最小割点就可以了。

网络流 - 割意义

主体思想:“割”表示“不选”,用它来实现一些例如“必须同时选”,“不能怎么样选”的问题,通常是从反面用割维护不合法的,然后总和-割,得到答案。

经典例题:最大权闭合子图

你有一个图,在这个图中选择一个子图,使得子图中每一个点的出边连向的点也都包含在子图中,称这个子图为“闭合子图”

每个点带一个权,可能是负的。找到最大权闭合子图。

把正的接 S,负的接 T,边容量为点权绝对值。原图中的边直接连,容量为 INF (相当于禁止这条边被割掉)

用正权和-最小割,就是最大权闭合子图。

简单(而不严谨的)证明:

现在我们已证,割只会割 S,T 接的边。

首先明确什么叫“选了”。对于正权点,割了等价于不选;对于负权点,割了等价于选。原因就是建图的时候我们相当于对负权点的边权变相反数之后再加边,才导致正负有区别。

考虑割 S 中的边,用正权和-最小割之后,这个操作的意义相当于“不选某个正权点”

同理,割 T 中的边相当于,(此时我们不会割 S 中的对应边),选了 S 中的某些边,而以带上某些负权点问代价。

这显然是原问题的两种决策。接下来我们只需要证明,选出来的割边所对应的点集,一定是闭合权图,即可。

假设现在选了 u,并且没选 u 的出边到达的点 v。考虑 4 种情况

  • u+,v+ :显然我们一定会选 v,不会出现这个情况
  • u+,v:没割 u,没割 v,此时 SuvT 是一条通路,与割的定义矛盾
  • u,v+:显然一定会选 v,不会出现这个情况
  • u,v:此时一定有一个正权点到 u的路,尽管 uT 断了,但是 uvT 仍然是通路,与割的定义矛盾。

综上,我们一定不会选一个非闭合子图出来。

再综上,我们一定会得到一个最大权闭合子图。

后记:这个trick,对割的基本定义要求理解深刻。

wwq:最基本的还在错,50遍

posted @   Flandre-Zhu  阅读(90)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示