dinic 复杂度:
所有边容量都是1:\[O(min(V^{2 \over 3},E^{1\over 2})\times E)\]
分层图存在一层容量都是1:\[O(E^{3\over 2})\]
在单位网络上:\[O(V^{1\over 2}\times E)\]
最小割:
\(~~~~\)处理冲突问题,多种收益只能选几个,把不割的边当作选的收益,割边当作舍弃收益。
\(~~~~\)经典模型:每个点有两种选择,两种收益,指定两人选不同种会减小收益(或选同种增大收益……)。
\(~~~~\)存在一些二者只能选其一的限制,只有当点一定能分成2个集合,内部没有限制(连边)(即二分图),才能从最小割角度解决。
\(~~~~\)从割的角度建图,点数\(~\ge~\)三层会自闭。
\(~~~~\)最小割加深理解(19冬令营&省选线上集训)
最大流:
\(~~~~\)处理有下限是否有解问题,把下限再源点汇点处控制好,若有最大流则有解。
\(~~~~\)无法理解:P3163 [CQOI2014]危桥。
费用流:
Johnson算法:
匹配:
线性规划:
志愿者招募
解方程:
如果出现负数,就调整这些边的意义使之成为正数,再染色让调整的边的两端点颜色不同,未调整的边的两端点颜色相同,若可以染色,则有解,否则不可做。
特殊图:
有负环无源无汇有源有汇有上下界最小最大费用流
二分图:
\(~~~~\)最大匹配/最大权匹配。
\(~~~~\)最小点覆盖/最小权点覆盖->最大独立集/最大权独立集。
\(~~~~\)最小边覆盖/最小权边覆盖。
\(~~~~hall\)定理:二分图存在完美匹配等价于左侧任意一个点子集向右侧连边的右部点的个数大于等于子集大小。
\(~~~~d(u)+d(v)\ge\)或\(\le s(u,v)\)转化成KM算法求顶标。
其他套路:
网格图黑白染色。
平面图最小割=对偶图最短路。
覆盖K次/选K(个/次)->有k条增广路。例子
流量平衡。
流的调整:最大流(残余网络上的环)、费用流(残余网络上的零环)。
最大密度子图->最大权闭合子图。
组队问题,时间分配问题。
多次操作,只有第一次有收获,一条容量1费用为收获的边,一条容量INF费用0的边。
给点和边赋予实际意义直接模拟操作例子
最小路径覆盖例子
最小权路径覆盖例子
一个元素建一条链代表阶段(多项选择),链上边的容量代表选择这条边的结果,链与链之间选点连正无穷边代表限制。
规律 1. 如果几个结点的流量的来源完全相同,则可以把它们合并成一个。
规律 2. 如果几个结点的流量的去向完全相同,则可以把它们合并成一个。
规律 3. 如果从点 u 到点 v 有一条容量为∞的边,并且点 v 除了点 u 以外没有别的流量来源,则可以把这两个结点合并成一个。
经验积累:
网络流的难点在于流量具有相同性没法控制多种不同的流,我们想办法找到不同流中的相同点与不同点,仅仅在需要区分的时候想办法区分例子。
problems:
CF786E
AGC029F
GCJ2017 Round2D Shoot the Turrets
ASC15 I King’s Inspection
Codechef PUSHFLOW
费用和流量的平方成线性关系\((cost=p\times x\times x)\):拆边,费用为\(p,3p,5p\cdots\),