6月网络流基础题做题记录
前言
因为这周讲课讲的题大多都很基础所以就选择了一些好一点的题记录。
小M的作物
对于两者选择一个的限制考虑最小割。
s 向 A 连边,B 向 t 连边。对与选一些 A 和 一些 B 有额外限制的情况,我们另从 s 向一个虚点连边,然后从这个虚点向对应的 A 连边,B 同理。
航空路线问题
面对无向边考虑钦定方向或者反边也建成容量为 flow 的边。
因为每个点只能走一次所以拆点,容量为 1,对于特殊点 1 和 n 容量应该为 2。注意特判最大流等于 1 但是存在边 \((1,n)\) 的情况。输出的话可以分两次 dfs 找容量为 0 的边。
志愿者招募
正难则反(?)
我们假设有很多个志愿者,然后每天都要保证至少有 \(x\) 个人工作相当于最多只能有 \(cnt-x\) 个人休息,对于志愿者就从区间左端点连到右端点即可。
水晶
首先考虑三维降为二维,然后观察两种共振,可以发现共振的有关点坐标和对 3 取模分别是 0,1,2 于是考虑以模 3 等于 0 的点作为关键点考虑建图。考虑限制是不能要“共振”,所以我们从 s 向 模 3 为 1 的点连边,然后这些点向模 3 为 2 的点连边,最后由模 3 为 2 的点向 t 连边。然后每个点由贡献不好处理于是拆点即可。
植物大战僵尸
感觉挺猎奇的题。你选择一个点就需要选择一些其他的点,具体的对于你选择的点你要选其右边的点,还有能保护它的点。这样重复下去就会选择很多点。这玩意是啥啊?实际上这个是一个闭合子图。于是我们的目标就是求图上一个最大权闭合子图。
但是考虑有一个问题就是这道题不能选环,所以我们需要一个拓扑排序标记一下可以用的点,然后求这些点组成的导出子图的最大权闭合子图。
现在讲一下最大权闭合子图求法。对于权值为正的我们从 s 向 其连边,否则从其向 t 连边。答案就是这张图的正权和减最小割。
祭祀
这题能黑?好像可以。
首先我不会什么乱七八糟的东西,我会画图,会手玩样例,我发现了第一问就是最小可重路径覆盖求路径数,可重的限制不好处理于是我们传递闭包再二分图匹配做完了。
第二问需要求一组解,是最小路径覆盖问题的第一问,直接做啊。最后有难度的是第三问,现在详细讲讲。
我们对于每个点去考虑其对原图独立集划分的影响。有两种情况:
- 这个点和能到达这个点的所有点还有这个点能到达的点构成的点集是图上的一条链,说明我们只能在链上选择一个点,于是这个点就是可选的。
- 如果不是链说明我们其实可以将这个点集划分成若干链,但是如果我选了这个点,那么其他点就都不能选了说明这样一定不优,则不能选。
所以我们可以枚举每个点,然后删去这个点集求一遍最小可重路径覆盖然后比较答案是否差 1,如果是就说明为第一种情况,否则不行。
封锁
牛逼题!考虑看我题解即可。
后记
其实还写了很多题但是太水了就不放出来献丑了。

浙公网安备 33010602011771号