转自 Good morning 的几句精辟的话
1.志愿者招募
根据流量平衡方程来构图非常方便,而且简单易懂,以后可能成为做网络流的神法之一
简单记一下流量平衡方程构图法的步骤:
a.列出需求不等式
b.通过设置松弛变量,将不等式变成等式
c.两两相减,得到流量平衡方程
d.观察方程,>0表示得到的流量,<0表示输出的流量,如果是跟需求量有关的变量,则跟源点和汇点连,如果是跟费用有关的变量则把相关的方程对应连边
e.使用最小费用最大流算法求解
具体连边方法:令oo=maxlongint,连(i,j,k,l)表示i向j连容量为k,费用为l的边
a.令a[0]=a[n+1]=0,对于a[i]-a[i-1]>0连(s,i,a[i]-a[i-1],0),而a[i]-a[i-1]<0,则连(i,t,a[i-1]-a[i],0)
b.连(i+1,i,oo,0)
c.对于每类志愿者(x,y,z),连(x,y+1,oo,z)
2.小结
网络流的本质其实就是贪心
网络流和不等式,流量平衡方程密不可分,在某种意义上,他们甚至可以说是等价的
网络流往往能处理一些依赖关系非常强的最优化问题
网络流的一些经典模型要熟悉,如最大权闭合图一类的最小割模型的应用,平面图网络流转最短路(反过来也不无可能的说)
如果要用网络流来搞题目,一定要列出目标式,明确要最优化的方向,通过对式子的变形来让看起来没法做的变得可以做;或是直接列流量平衡方程来构图
费用流相当于是给最大流增了一维,功能更强大的代价是速度慢了