网络流做题笔记

P3227 [HNOI2013] 切糕
考虑最小割。
对于一个坐标上的点只能选择一个 \(z\) 坐标,将 \(z\) 坐标的费用作为流量顺次连接。
第二个限制条件,先去绝对值,枚举较大值。
再限制较小值,不能小于 \(z-D\),从 \((x,y,z)\)\((x',y',z-D)\)\(inf\) 即可。

方格取数问题
相邻节点之间都有限制,一对限制取两点最小值,跑最小割即可。
将网格线规定限制方向,使每个点只连向源点或汇点,黑白染色即可。

最长k可重线段集问题
与最长 \(k\) 可重区间集问题相似,不同之处是 \(l=r\) 的情况。
考虑不能有自环,处理一个自己连向自己的边,将一个数轴上的点拆为入点和出点即可。

最长不下降子序列问题
思路:看到最长,考虑费用流,魔改只有跑出来最长路时累加答案,过了。

考虑最大流做法,先 \(O(n^2)dp\)\(f_i=1\) 的点与源点连边,\(f_i=\max_j{f_j}\) 的点与汇点连边。
两点之间满足 \(f_i+1=f_j\)\(a_i\le a_j\) 连边。
点有次数限制,拆点即可。

[THUPC 2025 初赛] 检查站
点有流量限制,拆成入点和出点,出点向入点连边,限制点的流量。
考虑将 \(u\) 连检查站的入点,\(v\) 连检查站的出点,使 \(u\)\(v\) 一定要断掉检查站的边。

为什么不能随意选检查站:可能有两对互不连通的点交在一个检查站上联通。

[SCOI2007] 修车
考虑到每个人修的车数不同时等待时间不同,将每个点拆成 \(n\) 个不同的点,表示状态,分别考虑费用即可。

最小割

设一个图可以支付一定边权将一条边删除。
\(s\)\(t\) 的最小割为将 \(s\)\(t\) 划分成不联通的两个集合 \(S\)\(T\) 的最小代价。

有最小割的 二选一 模型,设 \(0/1\) 变量 \(x_i\) 表示第 \(i\) 个元素选 / 不选。
\(\min{(\sum\limits_{i} a_i x_i + \sum\limits_{i} b_i \bar{x_i} + \sum\limits_{i,j}(c_{i,j} x_i \bar{x_j}))}\)\(a_i,b_i,c_{i,j} \ge 0\))。
\(i\)\(s\) 相连表示选此元素。
\(s\)\(i\)\(a_i\) 流量,割掉这条边表示不选 \(i\)
\(i\)\(t\)\(b_i\) 流量,割掉这条边表示选 \(i\)
\(i\)\(j\)\(c_{i,j}\) 流量,割掉这条边表示选 \(i\) 且不选 \(j\)
最后减去图的最大流即可。

关于处理 $ - x_i x_j$。

\[\begin{aligned} - x_i x_j &= x_i (\bar{x_j} - 1) \\ &= x_i \bar{x_j} - x_i \\ &= x_i \bar{x_j} + \bar{x_i} - 1 \end{aligned} \]

可以转化为对应形式。

疑似不能解决 \(x_i x_j\) 形式的代价。

[CEOI 2008] order
最小化费用,经典最小割。
最小割割掉哪一层相当于支付那一层的代价,每一条链只会支付其中一个代价。
将买的花费,租的花费,不做工作的花费,分别建三层即可。

文理分科
我们要处理 \(\max{( \sum\limits_{i} (a_i x_i + b_i \bar{x_i}) + \sum\limits_{i}c_i \prod\limits_{x \in X_i}x_i + \sum\limits_{i}d_i \prod\limits_{x \in Y_i}\bar{x_i} )}\)
发现网络流类问题 不好做,转化为
\(i\)\(s\) 相连表示选此元素。

下面只讨论 \(\sum\limits_{i}c_i \prod\limits_{x \in X_i}x_i\) 的处理方法。
新建一个点 \(p\) 表示该限制。
集合 \(X_i\) 任意元素划分到 \(T\) 均不合法,将 \(p\) 向集合 \(X_i\) 中的每个元素连一条大小为 \(inf\) 的边。
还可以不选集合 \(X_i\) 的贡献,\(s\)\(p\)\(c_i\) 流量。

Two Permutations
每个排列有两种选择(重排 / 不重排),一定的是,一个置换环上的点一定是同一种选择。
考虑将每个置换环看作一个点,每个点有两种选择,经典 二选一 类最小割。
分类讨论下标 \(i\) 的贡献。
\(f_i,g_i\) 表示是否重排排列 \(P,Q\)

  1. \(x_i = y_i = i\),一定会有 \(1\) 的花费。
  2. \(x_i = y_i \neq i\)\(f_i g_i\)\(\bar{f_i} \bar{g_i}\) 都有 \(1\) 的花费。
  3. \(x_i \neq y_i , x_i = i\)\(g_i\) 会有 \(1\) 的花费。
  4. \(x_i \neq y_i , y_i = i\)\(f_i\) 会有 \(1\) 的花费。
  5. \(x_i \neq y_i , y_i \neq i , x_i \neq i\)\(f_i g_i\) 会有 \(1\) 的花费。

发现有上文无法解决的 \(f_i g_j\) 形式的代价。
观察性质,发现为两个 独立的 集合可以通过 反转 第二个集合定义,将式子改为 \(f_i \bar{g_i}\) 的形式。
此时 \(P_i\)\(s\) 相连表示选 \(P_i\),相反的 \(Q_i\)\(s\) 相连表示不选 \(Q_i\)
直接使用上述模板即可。

posted @ 2025-09-12 18:43  C_Wish  阅读(5)  评论(0)    收藏  举报