网络流24题总结(基本建模)

简介

网络流算法在于把抽象的题目转换为图上水流问题,通常在省选及以上难度范围出现,最初由似贪心问题引出

通常在数据较小,看似可贪心但实则需要不断后悔调整的题目中可应用到

飞行员配对方案问题

发现飞行员类型仅两种,且每个飞行员至多参加一个队伍,显然这是个二分图

按类型染色,按匹配连边,跑匈牙利就能过

负载平衡问题

求出平均数\(sum\)\(a_i>sum\)的这部分显然变化的只有\(sum-a_i\),而\(a_i<sum\)同理

而这两部分的缺口或者增量是互补的

考虑分类分别与源点汇点相连流量为\(|sum-a_i|\),相邻点连边,流量\(inf\)费用\(1\)

汽车加油行驶问题

\(K\)较小,考虑拆点表示状态,\(pos_{i,j,k}\)为位于坐标\((i,j)\)是油量还剩\(k\)

考虑转移:

  • 有加油站的位置必须加油,:\(pos_{i,j,k}(k\in [0,K-1])\)\(pos_{i,j,K}\)连容量为\(1\)费用为\(A\)的边
    没油是必须加油:\(pos_{i,j,0}\)\(pos_{i,j,K}\)连容量为\(1\)费用为\(A_C\)的边

  • 有加油站的位置仅有\(pos_{i,j,K}\)能向其他位置移动(保证必须加油)
    其他位置\(pos_{i,j,k}\)\(pos_{i',j',k-1}\)连容量为\(1\)的边,费用判断相对位置考虑费用为\(0\)或为\(B\)

圆桌问题

两种类型,且收支平衡,源点向单位连容量为人数的边,圆桌向汇点连容量为座位数的边

每个单位向每个圆桌连容量为\(1\)的边(每个单位至多一人坐在一个圆桌)

太空飞行计划问题

最大权闭合子图(总结写好了再放上来)

\(ans=正权和-最小割\),正权属于仪器,最小割相当于把容量流完了,则还有源点还能到的仪器为选择的仪器

深海机器人问题

一条边的意义:第一次经过贪心地选价值,之后都不增加贡献了
则两点之间连两条边:容量为\(1\)费用为\(val_{i,j}\);流容量为\(inf\)费用为\(0\)

机器人始点源点向其连容量为人数费用为\(0\)的边;机器人终点其向汇点连容量为人数费用为\(0\)的边

餐巾计划问题

拆点:\(x(\)早上\()\)\(x'(\)晚上\()\)
收支配合通过脏纸巾表示出来,为保证每天用量:\(i \xrightarrow{r_i, 0} T\)
晚上收到脏纸巾:\(S \xrightarrow{r_i, 0} i'\)

购买新纸巾:\(S \xrightarrow{\infty, p} i'\)

洗纸巾:\(i \xrightarrow{\infty, f} i+m',i \xrightarrow{\infty, s} i+n'\)

新旧纸巾的延续:\(i \xrightarrow{\infty, 0} i+1',i' \xrightarrow{\infty, f} i+1'\)

数字梯形问题

规则一

  • 点不相交:拆点\(x_{i,j}\xrightarrow{1, val_{i,j}}y_{i,j}\)

  • 边不相交:\(y_{i,j}\xrightarrow{1, 0}x_{i+1,j},y_{i,j}\xrightarrow{1, 0}x_{i+1,j+1}\)

源点向第一行\(m\)个位置连容量为\(1\)费用为\(0\)的边,汇点同理
规则二

  • 点可以相交:拆点\(x_{i,j}\xrightarrow{\infty, val_{i,j}}y_{i,j}\)

最后一行与汇点的边容量为\(\infty\)
规则三

  • 边可以相交:\(y_{i,j}\xrightarrow{\infty, 0}x_{i+1,j},y_{i,j}\xrightarrow{\infty, 0}x_{i+1,j+1}\)

[CTSC1999]家园

发现每辆车下一站的位置和时间相关,所以按时间分层
\((t,i)\)表示时刻\(t\)\(i\)点,枚举车i,则\((t,v_{i,t~mod~c_i})\xrightarrow{h_i} (t+1,v_{i,t+1~mod~c_i})\)

posted @ 2019-05-13 09:46  y2823774827y  阅读(439)  评论(0编辑  收藏  举报