<span>网络流杂题 三</span>
A. 1565: 植物大战僵尸
考虑保护关系可能会出环,也就是其中任何一个一定不能被选。
注意环的出边也是无法被选的。
注意要找的环的出边并不是网络流建的图的出边,因为网络流反映的是必须选的关系,即由被保护者到保护者。
然后就是简单的最大权闭合子图。
B. 寿司餐厅
似乎并不是很难,但是没有想到。
考虑每次取出$(l,r)$,那么一定要取出$(l,r)$的任意一个子集。
简单的建边方法是建边$(l,r)->(l,r-1)$ $(l,r)->(l+1,r)$。
然后发现一个比较难搞的内容是统计选的花费,似乎可以简单转化为选$(x,x)$,必须选它后面代表花费的节点。
因为每次选第一个的花费不同,所以再连出一条$inf$边表示选第一个的花费,选的花费为差量就好了。
C. 51nod 1551 集合交易
因为保证任意$k$个集合的并集大于等于$k$,那么由
Hall定理的推论:
假设两边的点集分别为X,Y(假设|X|<=|Y|),
则二分图的最大匹配数为|X|−max{|W|−|N(W)|},其中W是X的子集
可得原图存在一个完美匹配。
那么每个集合可以找到它所对应的代表元素。
当选出$k$个集合时,因为其中每个集合对应着互不相同的代表元素,已经到达了$k$个的限制。
所以不能再有任意一个选择的集合含有的元素没有被选。
那么当选择一个集合时,它的每个元素所对应的集合都应该被选。
D. 2406: 矩阵
考虑检验答案小于等于$k$是否是可行的。
将行列分别放在二分图的左右部,分别向$s$ $t$连边。
行列之间连边对应所在格子,流量任意。
流量$1$对应着 源-行-列-汇 ,即一个格子对所在行列之和分别作出$1$的贡献。
于是行列之和通过上下界限制。
二分然后检验在该上下界意义下是否存在可行流就好了。
E. 支线剧情
上下界最小费用可行流。
$spfa$不断找最短路补流,然后就完事了。
按照我原来的理解这样并不合理:当$s$到$t$之间存在一条流量为负的增广路,可以在满足上下界的前提下使得费用更小。
然而$yxs$大神指出了这样的情况并不存在:因为$t$到$s$之间存在一个$0$费用边,如果存在流量为负的增广路,出负环$spfa$必死。
F. 1061: 志愿者招募
难点在于如何想到无源汇。
想到之后就没了,串联表示人员可以继承,通过上下界限制流量。
在起点,终点,每个员工的新建点之间建出一个环,然后跑无源汇上下界最小费用可行流就好了。
G. 旅行时的困惑
上下界最小可行流。
H. 清理雪道
上下界最小可行流。
在有源汇可行流的基础上,一个做法是:
取出t->s边的流量,即可行流中s到t的流量,表示已经流的流量。
删掉t->s这条边。
考虑在残量网络上t到s的流,对应着s到t的退流。
给该流量减去t到s的最大流,表示尽量大退流。
另一个做法是:
先不建t->s这条边,尽量补流,此时并不一定能跑满流。
之后建出t->这条边,在残量网络上仍能增广出的流量,是在尽量不走t->s这条边前提下的,即最小可行流。