网络流24题

网络流24题

前言

我的网络流(从入门到刷完某23题)大概花了两周多一点。总体来说,网络流入门还行,上手不难,但做题的时候就能感受到绝望般的实力压制...

网络流的算法非常简单。或者说,非常有限。最大流,费用流..然后仔细想想也没有什么了。但是网络流的题难就在建模。怎么把一个实际问题,抽象为模型,而且是网络流这种模型中也算是比较抽象的模型,就很有思维含量。像我这种蒟蒻只能在题解中恍然大悟,然后“欸,雾草,刚刚我怎么就想不到,再来一道肯定行”,接着真香,酱紫循环。

欸,果然还是太菜了ヾ(≧へ≦)〃

网络流24题列表

做网络流24题的时候,是随手在百度上搜索“网络流24题”,然后找了一篇todolist,按着“顺序”做的。但是事实上,这个todolist排列也不是合理。现在全部做完之后,按照我做题的心得重新排一下序列

本列表经可能地按照按照难度从易到难,相同算法整理汇总,以及算法按照(\({二分图} \Rightarrow {网络流} \Rightarrow {费用流}\))的顺序。本列表最终结果为期望值的最大值(●'◡'●)

编号 题目名字 题目模型 转化模型
1 飞行员配对方案问题 二分图最大匹配 二分图
2 孤岛营救问题 分层图最短路径 最短路径
3 汽车加油行驶问题 分层图最短路径 最短路径
4 软件补丁问题 最小转移代价 最短路径
5 星际转移问题 分层图转移 最大流
6 太空飞行计划问题 最大权闭合图 最小割
7 最小路径覆盖问题 有向无环图最小路径覆盖 最大流
8 魔术球问题 有向无环图最小路径覆盖 最大流
9 圆桌问题 二分图多重匹配 最大流
10 试题库问题 二分图多重匹配 最大流
11 分配问题 二分图最佳匹配 费用流
12 方格取数问题 二分图点权最大独立集 最小割
13 骑士共存问题 二分图点权最大独立集 最小割
14 负载平衡问题 费用流水题模板题 费用流
15 运输问题 费用流水题模板题 费用流
16 最长递增子序列问题 限制性带权路径 最大流
17 航空路线问题 限制性带权路径 费用流
18 数字梯形问题 限制性带权路径 费用流
19 最长k可重区间集问题 限制性带权路径 费用流
20 最长k可重线段集问题 限制性带权路径 费用流
21 深海机器人问题 限制性带权路径 费用流
22 火星探险问题 限制性带权路径 费用流
23 餐巾计划问题 线性规划网络流优化 费用流
24 机器人路径规划问题 WARNING!! WARNING!!

网络流24题题型归纳

把网络流24题中,所有出现过的题型整理如下:

图上状态转移

涉案题目:

编号 题目名字 题目模型 转化模型
2 孤岛营救问题 分层图最短路径 最短路径
3 汽车加油行驶问题 分层图最短路径 最短路径
4 软件补丁问题 最小转移代价 最短路径
5 星际转移问题 分层图转移 最大流

这类题的特征就是,由一个确定的状态可以通过有限的方案,转化为另外一种确定的状态,思路有点类似dp转移。

2、3、4 这三道题就是状压dp(没错,网络流里混进来的间谍),见图,一发spfa或dijkstar即可

其中第4题还有一点比较特殊,这道题的转移方案特别多,对应过来就是,图上的边特别特别多,多到无法存下来。咋办呢?由于点是确定且数量可以接受的,就跑最短路径的同时,“建”边即可。

而 5 这道题稍微有一点难度。这道题和前三道题有所区分。它并不是单纯的状压,而用到网络流。

它的一个思维难点就在于时间是无法事先确定的,只能模拟。模拟的过程中,不断为某一天增边建图,然后跑最大流

有向无环图最小路径覆盖

涉案题目:

编号 题目名字 题目模型 转化模型
7 最小路径覆盖问题 有向无环图最小路径覆盖 最大流
8 魔术球问题 有向无环图最小路径覆盖 最大流

详情请参考我的博客 “网络流 最小路径覆盖” 和 “题解 魔术球问题”

二分图相关算法

涉案题目:

编号 题目名字 题目模型 转化模型
9 圆桌问题 二分图多重匹配 最大流
10 试题库问题 二分图多重匹配 最大流
11 分配问题 二分图最佳匹配 费用流

这类题就是用网络流的算法去解决二分图的问题。学习了网络流之后,再看二分图,感觉就比较简单了。简单的建图,简单的网络流即可一发带走( •̀ ω •́ )y

不相交路径

涉案题目:

编号 题目名字 题目模型 转化模型
16 最长递增子序列问题 限制性带权路径 最大流
17 航空路线问题 限制性带权路径 费用流
18 数字梯形问题 限制性带权路径 费用流
19 最长k可重区间集问题 限制性带权路径 费用流
20 最长k可重线段集问题 限制性带权路径 费用流
21 深海机器人问题 限制性带权路径 费用流
22 火星探险问题 限制性带权路径 费用流

第一眼看限制性带权路径的题,很容易让人感觉是搜索题。因为假如数据范围足够小,简单的搜索是能够保证正确性的。

但是,学完了网络流,可解决的数据范围肯定就要比搜索肥了不少

这类题的总体思路是拆点:

  1. \({x} \Rightarrow {x'}\) 的流量和费用表示经过这个点的收益
  2. \({x'} \Rightarrow {y}\) 的流量和费用表示从一个x点转移到y点,或者转移过程中点收益
  3. \({src} \Rightarrow {x}\) 表示路径的起始点,流量为路径条数,费用通常为\(0\)
  4. \({x} \Rightarrow {tar}\) 表示路径的终点,流量通常为\(INF\),费用通常为\(0\)

然后,建图,一发入魂╰( ̄ω ̄o)

线性规划网络优化

涉案题目:

编号 题目名字 题目模型 转化模型
23 餐巾计划问题 线性规划网络优化 费用流

这类题就是用网络流来优化线性规划,由于线性规划本身就具有很强的灵活性,所以这类题也相应的具有很强的灵活性

说是“类”,其实也只见过两道题而已啊~~(>人<;)

餐巾计划这道题我认为是网络23题中最难的一道题。建图很有创造性,通过建图,完美的表达了题目的限制条件的同时,又用上了费用流这个强大利器,Orz

后记

网络流23题一共耗了我两周多时间。从当初望着todolist望尘莫及,到最后ac完最后一道题,在内网掀起一阵波澜,算是体验了一轮春播秋收。

希望以后还能保持这种学习热情( •̀ ω •́ )y

手打5000字,好累

posted @ 2020-06-29 23:16  ticmis  阅读(3397)  评论(2编辑  收藏  举报