网络流 1
最大流
不想讲挺多关于板子的东西
还是,会个Dinic
就可以开始做题了
Dinic
板子练手
常见的套路就是拆点之类的东西
还有一些是二分图之类的东西,二分图是比较好看出来的
讲个拆点的再讲个二分图先
可以用网络流的数据范围都不大,
差不多\(n,m=100\)
拆点
应该都知道最大流,流的属性体现在边上
但是有的限制是关于点的限制
这个时候我们把点的限制转换成边的限制
先讲个题
酒店之王
首先一个思路就是:
房和菜连边流量\(1\)
菜和\(T\)连边流量\(1\)
房和\(S\)连边流量\(1\)
于是您Wrong Answer
了......
原因就是,一个人会算多遍
这不简单?连个中间点就结束了
可是网络流管边啊......
所以我们对中间点拆点,中间加一条流量为\(1\)的边即可
黑白染色转二分图
网格图神器
有些操作比较骚,
这里边有的点限制你没看出来是什么东西
然后你就考虑在网格图上黑白染色
看看能不能搞出一种染色方式使得两个操作对象颜色不同
然后这样就可以把对象当点,操作当边转成二分图搞
二分图
二分图最小点覆盖的点数,等于二分图最大匹配的边数
二分图最大独立集的点数,等于点总数减掉最小点覆盖
最小割
最小割等于最大流
先记住这一句话
流量为inf的边
事实上由于最小割的最小性质,
我们加的这个流量为\(\infty\)的边显然不会出现在最小割里对吧
所以我们连的流量为\(\infty\)的边事实上表示原图上这条边不被割断
所以这个也就有一个防止割断的意思
最大权闭合子图
这个东西水经验还是比较多的