网络流24题复习

一.最大流

1.P2756 飞行员配对方案问题

使用Dinic求二分图最大匹配即可。

2.P2763 试题库问题

建图显然,源点连每道题,流量为1;每道题连它能成为的试题类型,流量为1;每道试题类型连向汇点,流量为所需题数。直接跑最大流即可。

3.P2764 最小路径覆盖问题

假设最开始使用n条路径覆盖,考虑每加上一条边都会使总路径数-1,那么利用这个性质可以做了。拆点,由于每个点只能处于一条路径上,源点连一个点的入点,流量为1,;入点连所有连着的点的出点;出点连向源点,流量为1。最大流即可。答案为n-最大流。

4.P2765 魔术球问题

每次加进来一个数,将之前的数中可以与它加和为平方数的向它连边。然后跑最小路径覆盖即可。

5.P2766 最长不下降子序列问题

这题很妙啊。

第一问LIS即可,第二问需要记录一个数组f[i]表示以i作为结尾的LIS最长的长度。套路拆点限流,连边的时候注意要使f[y]==f[x]+1且a[y]>=a[x]才连边,似乎是一个分层图的思想,这样就可以保证求出来的是最长的。第三问与第二问只差限流大小而已。

6.P3254 圆桌问题

最大流裸题。直接源点连单位,流量人数;单位连每个餐桌,流量为1;餐桌连汇点,流量容量即可。

二.最小割

1.P2762 太空飞行计划问题

最大权闭合子图经典题,源点连所有的收益项目,流量为收益;所有的代价项目连汇点,流量为代价。收益项目与代价项目之间连流量为正无穷的边。这样如果与源点间有流量相连就表示选这个项目,与汇点间有流量相连就表示不选这个项目。

2.P2774 方格取数问题

将方格黑白染色,然后就是最小割模板题,选了一个方格需要割掉它周围的四个方格。

3.P3355 骑士共存问题

和上一题基本一样,发现骑士矛盾的也是黑白格之间,也就是说两个黑格骑士不会矛盾。所以也是一个二分图,最小割即可。

三.费用流

1.P1251 餐巾计划问题

这是一道费用流的经典题,因为直观建图是错的。最初的想法是拆点限流,原点连向早上,晚上连向汇点。但这样是错的,因为为了满足最大流,每天都会新买餐巾。错误的原因是没有找到守恒量,从源点连出的流表示新买的餐巾,它不等于每天从汇点流出的流。所以解决方案是反过来思考:每天早上得到的新餐巾=新买的餐巾+洗后的旧餐巾。所以可以源点连晚上表示这天晚上可以洗多少餐巾,早上连汇点表示这天需要得到多少新餐巾,同时源点连早上表示可以新买餐巾,晚上连若干天之后的早上表示洗餐巾。

2.P2770 航空路线问题

我太愚蠢了。。。这个很明显可以转换成从1出发到n的两条不相交路径。然后拆点建图跑最大费用最大流就行了。注意特判。。。

3.P3356 火星探险问题

拆点,按题目所说建图,在限流时,分成两条边,一条只能流一个流,收益为标本数,另一条可以随便流,但没有收益。最大费用最大流即可。

4.P3358 最长k可重区间集问题

源点向1连容量为k的流,相邻点之间连容量为k,费用为0的流,l和r之间连容量为1,费用为区间长度的流。感觉是在l借流,在r还流,然后获得收益。

5.P3357 最长k可重线段集问题

和上一题基本一样,不再赘述。

6.P4012 深海机器人问题

和火星探险没有什么区别。

7.P4013 数字梯形问题

第一问,拆点限流,其实边的流量可以随意设。

第二问,拆点的限流可以变成inf,边的流量为1。

第三问,全都变成inf。

8.P4014 分配问题

二分图最大完美匹配。

9.P4015 运输问题

还是模板费用流。

原文地址:https://www.cnblogs.com/lnsyphy/p/12212695.html