网络流 24 题做题笔记
先立个 flag,寒假结束前切完。
◈ 完成网络流 24 题(7/24)。
1 最大流
1.1 P2756 飞行员配对方案问题
链接
思路:
其实可以用二分图过,匈牙利之后就没了,网络流的话貌似是建图后在 DFS 中判断某一条是否被流量流过。
1.2 P2754 [CTSC1999] 家园 / 星际转移问题
链接
思路:
首先判断是否有解,可以使用并查集。
分层图,我们将每一个时间节点视为一层图,通过枚举时间节点,一边跑 Dinic 一边建图。具体的,加入在
1.3 P2766 最长不下降子序列问题
链接
思路:
对于第一问,DP 解决(设以
对于第二问,我们可以对于所有的
对于第三问,将点
2 最小割
2.1 P2774 方格取数问题
链接
思路:
最小独立集经典问题。首先考虑将方格中相邻点全部建边,构成一个二分图,且二分图中边流量上限设置为
原理大致就是,因为若两点有连边(即在方格中相邻),两者至少有一个不选。我们建图方式会使两者出现让该图出现通路,在最小割中会选择删除两点与源点或汇点的连边中的至少一条,所以跑完最小割剩下的点就是可以选的点。
2.2 P2762 太空飞行计划问题
链接
思路:
不难发现,对于一场实验,要么做实验,要么将这一场要用的仪器全部不买(其它要做的实验用到的除外)。很容易想到建图方式,对于一场实验将其与之所有要用的仪器连边,构成一个二分图,其间容量为
跑最小割,答案就是所有实验的收益之和减去割去的边(若某实验被割,则说明该实验不用做,需减去;若某仪器被割,说明至少有一场实验要用到它,需要在收益中减去它的花费)。至于方案,就是所有与源点相连的边(若某实验被割,则该实验不需要做,且其所有相关的仪器若没有其它要做的实验用到,也不联通,即也不需要)
2.3 P3355 骑士共存问题
链接
思路:
方格取数 Pro MAX。
3 最小费用流
3.1 P1251 餐巾计划问题
链接
思路:
补充一下,餐厅一开始没有餐巾。
先拆点,将每天拆为白天和晚上,即
-
每天早上必须要有
r_i 块干净的毛巾,因此i 到汇点连一条流量为r_i ,费用为0 的边; -
每天晚上会多出
r_i 条脏毛巾,所以由起点向i' 连一条费用为0 ,流量为r_i 的毛巾。
至于为什么这样建边能满足限制条件,等会再说。
接下来考虑处理脏毛巾:
-
买新的,即有原点向每个
i 连边,流量为+\infty ,费用为p 。 -
留到第二天,即
i' 向(i+1)' 连边,流量为+\infty ,费用为0 。 -
送到快洗部,即
i' 向(i+m)' 连边,流量为+\infty ,费用为f 。 -
送到慢洗部同理。
然后跑费用流即可。关于之所以限制条件能满足,是因为对于每个