网络流一些常用模型的建构

本文参考自

NOI2016国家集训队论文:网络流i的一些建模方法.作者:东营胜利第一中学 姜志豪

1.最小割模型

引用论文的话,最小割常常用来解决收益冲突的情况下,最大\小化收益

最经典的是最大权闭合子图了吧.过于经典便不再赘述.

 

一个切入点,从两点关系入手开始分析.

 

我们可以分别B~S,B~T,A~S,A~T上面放上它们选/不选的收益,特别的,如果存在负数,我们可以先把负数累加到答案,然后把该负数的绝对值累加到另外那条边的边权上.意即先钦定答案里有负数那条边,但如果不选,就要把收益吐出去,即加上它的相反数

a,b可以连上A,B同时选/不选/一个选一个不选造成的额外收益

例题的话,参考论文

2.费用流模型

例题:[WC2007石头剪刀布]

以下简称满足"石头剪刀布"的三元组为合法的三元组

考虑到直接计算合法的三元组很难,考虑计算不合法的三元组,分析一下一定是某个人赢了两场,剩下的俩人某人赢了一场

设第$i$个人赢了$w_i$场,则答案为$\Sigma$ $w_i$ * ($w_i$ - 1) / 2.考虑我们要最大化合法组,即我们要最小化非法组

考虑以下几个要素,比赛,人,比赛只能一个人赢,体现在流量上就是只能流向一个人

考虑将还没比的比赛当作点,连向S,连向比赛的两个人流量为1,费用为0,人作为点,连向T,注意此处的费用并不是一个常函数,而是一个随流量递增的函数,我们考虑将一条边拆成很多条边,费用为流量的函数的差值,

此处为$i$+$w_{ori}$,$w_{ori}$表示已经确定的赢的场次,$i$表示这是新增的赢的第$i$场,由最小费用最大流的性质和函数的单调递增性(不减即可满足)可以保证合法.

3.流量平衡模型

例题:[NOI2008志愿者招募]

详细题解可见论文,这里简单讲一下为什么可以用费用流来做

首先这显然可以写成线性规划的形式,但我不会单纯形  但我们发现这个标准形非常地特殊,它每个变量不为0的恰好是一段连续的区间,于是差分完便成为了两个正负相反的点,恰好可以看成网络流中的流量平衡(正即流入,负即流出,盈余即流向T,亏损即由S流入)

于是可以利用这点建图来跑最小费用最大流.

4.习题:[题单:网络流建模经典题]

  1. P4553(完成)
  2. P3511(完成)
  3. P4066
  4. P4003
  5. P5458
  6. P5038
  7. P3308
  8. P4496
  9. P2304

  upd P3511

  想假了,有一点要注意,就是a->b,b->c,c->a的情况,很有可能让看上去很对的网络流建模出现锅

posted @ 2021-02-18 21:45  y_dove  阅读(256)  评论(1编辑  收藏  举报