[题单]网络流24题

1.搭配飞行员

1.1.问题描述

传送门 to LOJ

飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员。由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞行,问如何搭配驾驶员才能使出航的飞机最多。

因为驾驶工作分工严格,两个正驾驶员或两个副驾驶员都不能同机飞行。

一共有 \(n\) 个飞行员,保证 \(n\le 100\).

1.2.思考

类似于搭配数量最多,这种模型就是典型的二分图匹配,每对关系连边,然后跑匈牙利即可。

2.太空飞行计划

2.1.问题描述

传送门 to LOJ

W 教授正在为国家航天中心计划一系列的太空飞行。每次太空飞行可进行一系列商业性实验而获取利润。现已确定了一个可供选择的实验集合 \(E=\{E_1,E_2,...,E_m\}\),和进行这些实验需要使用的全部仪器的集合 \(I=\{I_1,I_2,...,I_n\}\)。实验 \(E_j\) 需要用到的仪器是 \(I\) 的子集 \(R\).

配置仪器 \(I_k\) 的费用为 \(c_k\) 美元。实验 \(E_j\) 的赞助商已同意为该实验结果支付 \(p_j\) 美元。W 教授的任务是找出一个有效算法,确定在一次太空飞行中要进行哪些实验并因此而配置哪些仪器才能使太空飞行的净收益最大。这里净收益是指进行实验所获得的全部收入与配置仪器的全部费用的差额。

对于给定的实验和仪器配置情况,编程找出净收益最大的试验计划。

\(n,m\le 50\).

2.2.思考

考虑转换模型,对于一些实验器材如果全部选上,则有 \(E_x\) 的贡献,如果有一个不选,则无法得到。

考虑将器材划分为 "选"(S) 与 "不选"(T) 两个集合,先不考虑容量正负,对于一个器材,如果选择,则从 \(S\) 向器材连一条 \(-c_i\) 的边,如果不选择,从器材向 \(T\) 连一条 \(0\) 的边,同时,为了处理一些同时选择器材造成贡献的情况,建新点,并将新点向所有涉及的点连接 \(+\infty\) 的边,并从 \(s\) 向新点连 \(p\) 的边。

现在调整正负性,然后发现......我的方法 GG 了?

主要问题好像是出现在,如果一组器材全部都选择了,这个 \(p\) 是算在整体的头上,但是像我这样做的话,这个贡献只算在了单点上。

丧心病狂 话说 \(n,m\) 那么小为什么不用折半搜索?

2.3.题解

话说看了题解一下子就明白了.....这种问题都要看题解我真的变傻逼了......

但是思想差不多的吧?

考虑选择一个实验,那么它对应的器材都要选,对于这种,我们考虑从 \(S\) 向实验连 \(p\) 的边,对于实验向每个器材连接 \(+\infty\) 的边,意味着如果实验被划分到选择的点集中,那么所有器材也必须跟着选,同时,从每个器材向 \(T\) 连容量为 \(c\) 的的边,意味着如果选择这个器材需要花费 \(c\),最后用 \(\sum p\) 减去最小割即可。

我发现了我的一些 bug,我原来的图可以这样画:

graph LR subgraph origin Is[I...] S-->|-c1|I I-->|0|T S-->|p|E E-->|inf|I E-->|inf|I2 E-->|inf|Is I2-->|0|T Is-->|0|T S-->|-c2|I2 S-->|-c...|Is end

但是由于我们 "默认" 不选择器材,所以从 \(I\)\(T\) 的容量为 \(0\) 的边没有用,但是如果先不忽略它,用待定系数法调整负边,然后把容量为 \(0\) 的边去掉,就和题解一样了。

实际上我建出的图本质上也是一样的,算是想出个伪正解吧......

3.最小路径覆盖

3.1.问题描述

传送门 to LOJ

3.2.思考

这都能是网络流?上个厕所......是真想不出来啊......

3.3.题解

这我还真不知道,可以分别从网络流、二分图匹配两个方面想:

二分图匹配

调整法可能是这个问题的核心,具体来说就是,先默认每条边长度都是 \(0\),每个点单独成一条路径,这样有 \(n\) 条边,然后我们考虑调整这种局面,具体调整方法就是合并两条路径,而每次合并路径就会使路径总数 \(-1\),但是我们应该怎么调整呢?考虑我们如果要合并一条边连接的两个点 \(u\rightarrow v\),相当于就是他们两个并成一个匹配,但是有可能 \(v\) 也要连出去啊,因为一条路径上,一个点完全有可能度为 \(2\),这个时候我们就要拆点,对于一个点 \(i\),我们拆成 \(i,i'\),一个处理连出去,一个处理被谁连,这样,建图方式也比较显然了:对于一条边 \(\lang u,v\rang\),连接 \(u\rightarrow v'\),对于所有的边都这样处理,最后跑最大匹配就 \(OK\),答案就是 \(n\) 减去匹配数量(因为每一次匹配实际上都是减少了一条路径),至于要还原路径,应该也是可做的。

网络流

实际上二分图匹配就是另外一种形式,考虑使用同样的方法建图,只是 \(u\rightarrow v'\) 的边容量为 \(+\infty\),然后从 \(S\) 向每个 \(i\) 连接 \(1\) 的边,从 \(i'\)\(T\) 连接 \(1\) 的边,最后跑最大流,就是最多能够合并的边的数量。

4.魔术球问题

4.1.问题描述

传送门

4.2.思考

将两个合法的数之间连一条边,一个石柱实际上就相当于一条路径,由于最长的路径一定对应最少的路径数量,所以我们最后选择的其实就最长的路径,这个就变成问题 \(3.\) 了,但是我们不知道球到底有多少怎么办?二分也没有上界啊?

4.3.题解

网上说直接枚举小球数量......但是可以证明这样复杂度不会上天?

有人说贪心地放,过程即枚举球,如果这个球放不了就新开一个柱子,直到超过了柱子上界......但是 wtcl,所以我不会证,或许这个证明也能够反映球的总数有限而可以放行地枚举罢......

证明有时间就补,没时间就......咕咕咕了

posted @ 2021-02-07 22:18  Arextre  阅读(65)  评论(0编辑  收藏  举报