网络流

网络流很好看🛴

上下界网络流

好久之前学的了 没有啥用🚽

思想挺有用的

我们定义一个边的流量需要满足 \(b(u, v) \le f(u, v) \le c(u,v)\)

无源汇上下界可行流

因为有下界, 所以我们直接让所有边的初始流量为 \(b(u, v)\)

这样我们会不满足净流量为 \(0\) 的条件, 所以设 \(M\)流入流量减去流出流量

如果 \(M < 0\) 那么向新建汇点连边

如果 \(M > 0\) 那么向新建源点连边

因为最后我们是要把新建源点汇点删掉的, 所以我们最终的图是流量平衡的

然后对于新的图跑最大流, 如果跑出来不满足, 就说明无解

有源汇上下界可行流

汇点向源点连上界为 inf 的边就可以了

有源汇上下界最大流

我们用上边的操作跑出来一组可行流, 然后我们在残量网络上跑最大流就可以了

残量网络就是把已经流过的流量删去, 不可以退流

有源汇上下界最小流

跑汇点向源点的最大流就可以了

本质?

说的简单一点, 就是只要满足

\(0 \le f(u, v) \le c(u, v)\)
\(\forall x \not = s, x \not= t, \sum f(i, x) - f(x, i) = 0\)

人话就是, 流量满足限制, 且每一个节点都是入流量等于出流量


最小割是分组

常见模型

最小割-最大权闭合子图

先把权值为正的加上, 负的连向汇点, 正的连向源点, 原图上有边就连 inf

然后求最小割

最小割-切糕模型

\(n\) 个变量, 如果 \(x_i = j\)\(w_{i, j}\) 的贡献
\(m\) 个限制, 形如 \(x_v \ge x_u + k\)

我们建一条链 \((u, i) \rightarrow (u , i + 1)\) 流量为权值, 割掉一条边表示选择 \(i\)

对于限制, 连边 \((u, j) \rightarrow (v, j + k)\) 流量为 \(inf\)

只能割一条的限制是 \((u, j) \rightarrow (u, j - 1)\) 流量为 \(inf\)

一面对多面

对于 \([l, r]\) 区间, 我们建一条链, 然后连边 \(l \rightarrow r\) 表示选择这个区间

可以解决无交, 区间减一

posted @ 2025-07-06 14:48  d3genera7e  阅读(4)  评论(0)    收藏  举报