线性规划对偶与网络流

线性规划对偶与网络流

1

https://ac.nowcoder.com/acm/contest/81598/K

K - Slay the Spire: Game Design

题目大意

给定一个 \(n\) 个点 \(m\) 条边的有向无环图 \(G = (V, E)\) 以及一个整数 \(k\) ,其中

所有无入度的点为源点,所有无出度的点为汇点。

要求选择最少数量的非源点和汇点的顶点放置精英怪,使得从任何一个

源点出发到任何一个汇点都要经过至少 k个精英怪;或者输出不存在合

法的放置方式。

\(2 ≤ n ≤ 1000\) \(1 ≤ m ≤ 5000\) , \(1 ≤ k ≤ 5\)

拆点后,从选点变为选边,\(f_{x}\) 表示从任意源点出发经过的最小边数,先写出线性规划

\[\begin{gather*} \text{minimize } \sum_{(u,v)} cost_{u,v} \max(0,f_{v}-f_{u}) \\ \text{subject to} \ \ \ f_v\leq f_u+1 \ \ \forall(u,v)\in E \\ f_v=0 \ \ \forall v\in S \\ f_v=k \ \ \forall v\in T \\ \end{gather*} \]

模型类似最小割 对偶之后转化为最小费用流(不是最小费用最大流),可以使用最小费用最大流算法,直到增广路长度为非负退出。因为最大流相当于用一个超平面截取一个高维凸包,现在这个平面可以动,则随流量变化答案单峰。

由于每次找增广路答案至少加一 则最多增广 \(n\) 次 复杂度 \(nm\log(n)\)

求出对偶问题解后,用互补松弛定理,使用差分约束得方案

这个解法的优点是 \(k\) 可以很大

2

https://codeforces.com/contest/1662/problem/J

之前部分有点难,但转化后变为找一个有向无环图的最大权反链。这个模型之前没见过。题解有个和下面不同的巧妙构造

那么还是拆点,转线性规划。拆的两点值不同代表选了。

\[\begin{gather*} \text{maximize } \sum_{(u,v)} w_{u,v} (f_{v}-f_{u}) \\ \text{subject to} \ \ \ f_u\leq f_v \ \ \forall(u,v)\in E \\ f_s=0 \\ f_t=1 \end{gather*} \]

对偶后变为一个有下界无上界的可行流,最小化流量

将原点连上汇点,变为只有这个边有1的费用的最小费用可行流,按照可行流套路,转为最小费用最大流。

进一步,只有一条边有费用的最小费用最大流,可以用连上这条边的最大流,减去没连的最大流。

3

https://codeforces.com/gym/101986 H

posted @ 2024-07-28 16:21  pigpigger  阅读(75)  评论(0)    收藏  举报