关于网络流的 Trick

拆点

有一个限制只关于一个节点本身,那么拆。


需求类问题

  1. 考虑把需求连向汇点,那么求(最小费用)最大流就行了。https://www.luogu.com.cn/problem/P1251
  2. 考虑建需求缺口,把预期最大流变成 \(inf\),然后建流量为 \(inf - \text{需求}\) 的边,最后跑最大流。https://www.luogu.com.cn/problem/P3980

特殊:有的时候需求是上下界,那么要跑一个最小费用流。

https://www.luogu.com.cn/problem/P3980(只是举例,这题最后不能这么做)


最小割模型

有多种选择

  1. 可以连一条链,选一种方案就是割其中一条边。https://www.luogu.com.cn/problem/CF1146G
  2. 拆贡献,变成下文的两种选择 https://www.luogu.com.cn/problem/CF1427G

有两种选择

连向源、汇各表示一种选择。

有顺序的做一些操作

可以考虑建点:第 \(i\) 次做 \(j\)

https://www.luogu.com.cn/problem/P2050


一面对多面

注意,这种不存在直接的见图方法。

此时我们可能考虑把网络流建成一条链,然后一面对多面变成一个前向边。

https://www.luogu.com.cn/problem/P3980


与链有关

考虑拆点建二分图,

  1. 让链最多:拆点,两个点 \((x, y)\) 有边起来刻画成 \(x + n \to y\),那么一单位的流量就是一条链。 https://www.luogu.com.cn/problem/P15246
  2. 让链最少:拆店,两个点 \((x, y)\) 有边起来刻画成 \(x\to y + n\),那么一单位的流量就是 \(-1\) 条链。

posted @ 2026-08-15 20:06  porse  阅读(11)  评论(0)    收藏  举报