网络流总结(一)最大流
网络流模型的性质
1>容量限制:$f(x,y)$<=$c(x,y)$
2>斜对称:$f(x,y)$=-$f(y,x)$
3>流守恒:除了S或者T,每个点的流出流量等于流入流量
最大流
最大流问题是指给定S和T,求出S到T的最大流量
这个图的最大流就是2,但是假如我们把这个图给skyh的话,他一定会走S->2->3->T,流量为1
之后他就写比了
我们如何该用一些反悔的操作来保证最大流呢?
用增广路
我们把skyh的图利用斜对称的性质进行反向边加流后拿出来看一看
神奇的是,我们又发现了一条路径,所以继续流过去
最后达到了与最优解一样的效果
增广路一般会用到Ek或dinic算法
但在最大流中一般用dinic
相同的是都先用对图分层,不同的是dinic是多路增广
代码就不放啦
T1奇怪的游戏
题目描述
输入格式
输出格式
相邻格子不难想到二分图染色,设白色的个数为$sum1$,总和为$num1$,黑色为$sum2$,$num2$,最终状态为x
那么便有$sum1*x-num1$=$sum2*x-num2$
1>$sum1$=$sum2$
直接二分并且用网络流$check$
注意需要满足$num1$=$num2$
2>$sum1$!=$sum2$($abs$($sum1-sum2$)=1)
$x$=$abs$($num1$-$num2$),$check$一下是否合法便是答案
网络流建图:
($S$,$white$,$x-last$),($black$,$T$,$x-last$),($white$,$black$,$INF$)
T2士兵占领
题目描述
输入格式
输出格式
考虑把至少放置转化成至多不放置,之后按行列转化成二分图,可以放置的地方化为边
于是它便成了一道最大流板子题
T3紧急疏散
题目描述
输入格式
输出格式
这道题用到了一个常用的套路:按时间拆点
显然满足单调性,但是直接二分会T,
我们发现check复杂度过高,反而二分的区间很小
所以考虑直接枚举时间,在上一个时间的残余网络上跑最大流