最大流最小割定理
对于一个网络流图$D=(V,E)$的一个可行流$f$,下述三个命题等价:
1>$f$是最大流
2>残余网络$G_f$不存在增广路
3>存在一个割$c$使得$c=f$
证明几乎是照搬的$rvalue$学长的
首先证明1->2:
假设残余网络中仍存在增广路,那么一定可以继续增光增加流量,则f不是最大流,与1命题矛盾
所以若f是最大流,则残余网络中一定不存在增广路
2->3:
设点集$L$为残余网络中$S$可以到达的点,$R$为$L$的补集,
那么对于$xin{L}$,$yin{R}$,一定有$f(x,y)=c(x,y)$
所以$f(S,T)=sum{}{}{f(x,y)}=sum{}{}{c(x,y)}=C(S,T)$,即$c=f$
3->1:
因为割一定大于等于流,所以此时的$c$一定是最小割,$f$一定是最大流
T1切糕
题目大意:给定n*m的位置,每个位置确定一个高度并获得相应的权值,相邻格子的高度差不能超过D,最大化权值和
首先考虑当没有高度限制时该怎么做:
裆燃是每个位置取$max$辣,但是假如不会取$max$,只会网络流该怎么办呢?
多加一层,每个位置都挂出一条链,链上的权值为每个位置各个高度的权值,求出最小割便是答案
如果加上高度限制,对于一对相邻位置$L$,$R$,假设$hL>hR$
我们需要让$L$选择$x$时$R$不能选择$x-D$以下的部分,也就是说当$R$选择$x-D$以下部分时需要有一条路径从可以联通$S-T$且$cap=INF$
考虑连边$(Lx,R_x-D,INF)$,恰好可以满足上述要求,问题得到了解决
T2狼抓兔子
题目描述
输入格式
输出格式
直接求最小割会$T$(除非打$ISAP$),我们需要一种更好的方案求出这张图的最小割...
平面图转对偶图:
对于红色的新图,我们发现其每一条$S'->T'$的路径便对应着原图中的一个最小割,
建出图来直接跑$DJ$求最短路也就是最小割即可
T3海拔
题目描述
输入格式
输出格式
题目中西北角是0,东南角是1,所以海拔不是0就是1,并且0,1的点一定分别是一个联通块
所以答案就是西北到东南的最小割,这样就和上一道题一样了
upd:
刚刚发现海拔可以是小数,但是在这种情况下海拔依然不是0就是1
因为如果出现小数相当于对原图进行了多次割
即$ans=sumlimits_{i=1}^{n}a_i*x_i$,其中$sumlimits_{i=1}^{n}a_i=1$
假设x递增,那么当$a_1$=1时ans最小,所以海拔只有0/1两种取值
T4线性代数
$ans=sum_{i=1}^{n}sum_{j=1}^{n}a[i]*a[j]*b[i][j]-sum_{i=1}^{n}a[i]*c[i]$
考虑建图:(S,i,sum_{k=1}^{n}b[i][k]),(i,T,c[i]),(i,j,b[i][j]),总收益减去最小割便是答案
这个类型的题我一般都是画出i,j两个点,枚举4种选的情况,
割掉S->i便代表不选,割i->T便代表选
在i,j之间加边来满足真正减去的贡献,就可以建出图来了
可能有些题需要加点,比如一会要讲的T6
T5人员雇佣
题目描述
输入格式
输出格式
首先明确贡献:
$11:2*e[i][j]$
$10/01:-e[i][j]$
$00:0$
强烈推荐用刚才那个套路,解决此类问题很快的!
建图方法:$(S,i,sum_{k=1}^{n}e[i][k]),(i,j,2*e[i][j]),(i,T,a[i])$
T6happiness
题目描述
输入格式
输出格式
这道题需要在i,j之间加两个点x,y代表同时选文/理
建图:$(S,i,文),(i,T,理),(S,x,同文),(x,i,INF),(x,j,INF),(i,y,INF),(j,y,INF),(y,T,同理)$
T7千钧一发
题目描述
输入格式
输出格式
我们发现偶数和偶数之间不可能矛盾,因为可以满足条件2
奇数和奇数之间也不可能矛盾,因为可以满足条件1,
因为把平方对4取mod,余数是0(偶数)/1(奇数),
所以对于两个奇数x,y:(x^2+y^2)%4=2,不可能是平方数
所以直接把a[]按奇偶分开,跑最小割即可