前言
其实我只是为了把网络流的总结放在一起的(你信吗)
二分图最大匹配
匈牙利
- 对于左边的枚举每一次选的左边的人
- 对于右边与他有连边的那么就是能换则换,不然就不换
- 最后统计出来的可行的就是\(ans\)
最大流
随便搞一下不就可以了吗?
二分图完美匹配
我们令左边的点(其实二分图没有什么左右)为女生,右边的点为男生,那么:
- 为每一个女生定一个心仪值,心仪值为她与男生连边中的最大值
- 为每一个女生找对象,要求男生的心仪值和女生的心仪值的和为他们的边权(男生的心仪值初始为0
真惨) - 如果没有找到对象,那么将2过程中的女生的心仪值全部-Min,男生的心仪值全部+Min(这个Min是通过自己算的,就是女生除了之前或当前心仪的男生外最心仪的男生的心仪值与她的心仪值之和减去边权的值)
- 重新为她找对象,直到找到或者当前女生的心仪值为0。
最大流
Dinic
- 建残量网络图
- 在残量网络图上跑增广路
- 重复1直到没有增广路(注意一个残量网络图要尽量把价值都用完,不然会浪费建图的时间)
HLPP
这个的总结好像还没有写,但是应该也快了。
有上下界的网络流
前言
其实这里有很多个,但是我现在还没写完,所以更新的比较慢,应该明天可以写完。
模板+讲解
最小费用最大流
- 用最短路算法求出s->t的路径(把路径要抠出来,而且每条边要有容量)
- 算一下路径里面的可以流过的最大的流量
- 发现此时的花费就是\(dis_t*Flow\),累加即可.
- 重复1->3直到不能够到达t.
其他
剩下的就还是建模与应用吧。
这些主要还是看具体的题目,因题而异。
拆点
一般性用于一个点需要与其他点多次连边。
如餐巾计划问题
或者是[BJOI2012]连连看
超级源点与汇点
一般性都需要这种东西吧,如果一个图有多个源点或者多个汇点,那么一般性就要这么写。
线段树优化连边
毒瘤jukai,毁我青春
还不会,1.12补坑。。。
其他中的其他
其实这个就纯在实在废话了,大家可以参考汝佳的蓝书