关于网络流建模的一些笔记
写在前面
网络流这个专题,说来博大精深,它的题目的主要特点就是——完全看不出来是网络流。。。。
所以这篇博客记录一下比较常见的网络流建图的模型吧。。。。。
最大流的一些基本模型
1.最大匹配
最大匹配基本可以较形象的理解为用多根绳子在保证合法的情况下将一些物品“串”了起来,最后要求用的绳子数最大。
如果会产生费用,我们就尽量将费用加在这条链上。
给几道例题:
1.POJ3281 Dining 题解传送门:https://blog.csdn.net/g21glf/article/details/82993255
2.ZOJ2760 How many shortest path 题解传送门:https://blog.csdn.net/g21glf/article/details/82996213
3.WOJ124 Football coach 题解传送门:https://blog.csdn.net/g21glf/article/details/82996984
4.HDU4322 Candy 题解传送门:https://blog.csdn.net/g21glf/article/details/83006153
常见模型1:最小路径覆盖
给定一个DAG,用最少的不相交的路径覆盖所有顶点。
题解:首先令答案为n(即用n条边,1条边覆盖一个顶点)
相邻的两条路径是可以首尾相连接在一起的,就是可以匹配。
每次匹配路径数-1,最终答案为(n-匹配次数),答案最小,则匹配次数最大,就是最大匹配,最后拆点跑最大流即可。
例题:POJ1422(后续会更吧。。。。如果忘了请提醒我填坑)
常见模型2:最小链覆盖
给定一个DAG,用最少的链覆盖所有点。
题解:解法一般是通过Floyd进行闭包传递然后当做最小路径覆盖来做。
例题:POJ2594(待更。。。。。)
常见模型3:最长反链(Dilworth定理)
证明见链接(反正我也不会证):http://vfleaking.blog.163.com/blog/static/1748076342012918105514527/
有了这个定理我们就可以直接用模型2来做了。
例题:BZOJ1143(还是待更。。。。。)
就先更到这吧。。。。刷题去咯
2.最小割