网络流一些常用模型的建构
本文参考自
NOI2016国家集训队论文:网络流i的一些建模方法.作者:东营胜利第一中学 姜志豪
1.最小割模型
引用论文的话,最小割常常用来解决收益冲突的情况下,最大\小化收益
最经典的是最大权闭合子图了吧.过于经典便不再赘述.
一个切入点,从两点关系入手开始分析.
我们可以分别B~S,B~T,A~S,A~T上面放上它们选/不选的收益,特别的,如果存在负数,我们可以先把负数累加到答案,然后把该负数的绝对值累加到另外那条边的边权上.意即先钦定答案里有负数那条边,但如果不选,就要把收益吐出去,即加上它的相反数
a,b可以连上A,B同时选/不选/一个选一个不选造成的额外收益
例题的话,参考论文
2.费用流模型
以下简称满足"石头剪刀布"的三元组为合法的三元组
考虑到直接计算合法的三元组很难,考虑计算不合法的三元组,分析一下一定是某个人赢了两场,剩下的俩人某人赢了一场
设第$i$个人赢了$w_i$场,则答案为$\Sigma$ $w_i$ * ($w_i$ - 1) / 2.考虑我们要最大化合法组,即我们要最小化非法组
考虑以下几个要素,比赛,人,比赛只能一个人赢,体现在流量上就是只能流向一个人
考虑将还没比的比赛当作点,连向S,连向比赛的两个人流量为1,费用为0,人作为点,连向T,注意此处的费用并不是一个常函数,而是一个随流量递增的函数,我们考虑将一条边拆成很多条边,费用为流量的函数的差值,
此处为$i$+$w_{ori}$,$w_{ori}$表示已经确定的赢的场次,$i$表示这是新增的赢的第$i$场,由最小费用最大流的性质和函数的单调递增性(不减即可满足)可以保证合法.
3.流量平衡模型
详细题解可见论文,这里简单讲一下为什么可以用费用流来做
首先这显然可以写成线性规划的形式,但我不会单纯形 但我们发现这个标准形非常地特殊,它每个变量不为0的恰好是一段连续的区间,于是差分完便成为了两个正负相反的点,恰好可以看成网络流中的流量平衡(正即流入,负即流出,盈余即流向T,亏损即由S流入)
于是可以利用这点建图来跑最小费用最大流.
4.习题:[题单:网络流建模经典题]
- P4553(完成)
- P3511(完成)
- P4066
- P4003
- P5458
- P5038
- P3308
- P4496
- P2304
upd P3511
想假了,有一点要注意,就是a->b,b->c,c->a的情况,很有可能让看上去很对的网络流建模出现锅