网络流题目合集

1|0P3163

题目链接

一个 simple 的想法是直接建出原图,然后由源点向两个起点连边权为 2a,2b 的边,两个终点向汇点连边权为 2a,2b 的边 ,检查是否满流。但是这样可能会有一些混乱的流量,例如 sa1b2t

考虑交换 b1,b2,然后再次跑最大流检查是否满流。我们可以证明,两次满流即为充要条件。

Prove:对于第一次跑最大流,假设上文中混乱的流量为 x,那么此时有 a1b2 的流量为 xb1b2 的流量为 bxb1a2 的流量也为 xa1a2 的流量为 ax。对于第二次跑最大流,注意到此时流量均没有改变,那么此时有 a1a2 的流量为 axb2b1 的流量为 bx,那么此时有 a1b1 的流量为 xb2a2 的流量为 x。那么对于第一种方案,我们可以将 a1b2a1b1 的流量叠加为 b1b2,另一种情况同理。

注意到叠加后每条边容量依旧合理,叠加时处理正反流量即可构造方案。

2|0CF1404E

题目链接

网络流好题。

我们首先考虑覆盖矩形的本质,其实相当于选一些边界删掉,使得删掉后剩下的所有连通块均为长或宽为一的矩形。

更进一步的考虑,这相当于每个点的上下边界和左右边界不能同时删掉,只能任选一组或不选,容易发现将删除限制看成边的话构成了一个二分图,两边点集分别为上下和左右边界所代表的点集。

最小割的感觉就来了。这是一个经典问题,将每个点的边界视为一个点,每次删掉一个点都会让答案减一,有若干个限制,分别为两个点不能同时删掉,且我们知道这些删除限制构成了一个二分图,那么直接由源点向上下边界代表的点集连边,左右边界向汇点代表的点集建边,此时的最小割即为保留的点数。答案即为总边界数减去最小割数。

注意这个答案并不是最终答案,而是最多减少的矩形数,所以最后要拿黑色格子数减去上面的答案。

3|0P4313

题目链接

第一个条件是简单的,仿照上题的处理方法,对每个人视为一个点 i,然后 si 连流量为 artiit 连 流量为 scii 的边即可,那么此时跑完最小割后,连在 s 上的点是选文,否则为理。

现在考虑周围一圈怎么处理。对于每个点 i 新建虚点,然后把所有有影响的点以 + 的边权连到虚点上,再把虚点向汇点连上边权为 sscii。那么此时想要完成最小割,要么断掉所有点向原点的连边,要么断掉虚点向汇点的连边,分别对应了有人选文和均选理的两种情况。sarti 同理处理。

4|0LOJ2384

题目链接

首先考虑没有 D 的限制怎么做,那么我们对于每个 (i,j) 直接挑出来一个 v(i,j,k) 最小的 (i,j,k) 割掉即可。这个反映到网络流上就是 s(i,j,1) 连接边权为 + 的边,(i,j,k)(i,j,k+1) 连接边权为 v(i,j,k) 的边,(i,j,r)r 连边权为 v(i,j,r) 的边。最小割即为答案。

现在加上 D,那我们即需要让一对距离大于 D 的点割掉后仍然联通即可,那么我们由 (i,j,k)(x±1,y,kD),(x,y±1,kD) 连边权为 + 的边即可。

5|0P4177

题目链接

首先不考虑租借怎么做,那么是裸的最大权闭合子图,每次将任务的边割掉相当于是不做该任务,将机器的边割掉相当于是买物品。现在考虑上租借,租借的意义在最大权闭合子图上相当于你可以花费一部分代价删掉一条边,那么此时割掉一条边相当于是租掉一个机器。那么把原来要求的 + 边改为租借机器的费用即可。

6|0CF1416F

题目链接


__EOF__

本文作者EXODUS
本文链接https://www.cnblogs.com/-Complex-/p/17607159.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   -Comρℓex-  阅读(75)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示