首页 > 其他分享 >网络流 24 题

网络流 24 题

时间:2023-03-06 09:02:26浏览次数:40  
标签:24 费用 infty Luogu 网络 流量 问题 入点

网络流 24 题

1. 餐巾计划问题

Luogu P1251 餐巾计划问题

将每天拆成两个点,\(i_1\) 点用于接收干净毛巾,\(i_2\) 点用于接收脏毛巾。那么:

  • 从 \(i_1\) 向 \(T\) 连流量为 \(r_i\),费用为 \(0\) 的边,如果满流则表示当天的干净毛巾数量足够。
  • 从 \(S\) 向 \(i_2\) 连流量为 \(r_i\),费用为 \(0\) 的边,表示每天结束时接收到 \(r_i\) 条脏毛巾。
  • 从 \(S\) 向 \(i_1\) 连流量为 \(\infty\),费用为 \(p\) 的边,表示每天开始时购买毛巾。
  • 从 \(i_2\) 向 \((i+m)_1\) 连流量为 \(\infty\),费用为 \(f\) 的边,表示送到快洗。
  • 从 \(i_2\) 向 \((i+n)_1\) 连流量为 \(\infty\),费用为 \(s\) 的边,表示送到慢洗。
  • 从 \(i_2\) 向 \((i+1)_2\) 连流量为 \(\infty\),费用为 \(0\) 的边,表示将脏毛巾留到下一天。

跑最小费用最大流即可。

2. 星际转移问题

Luogu P2754 [CTSC1999]家园 / 星际转移问题

按照时间拆点,将每个点按照编号和时间拆成若干个点 \((i,t)\)。然后直接按照题目给出的太空船停靠的位置进行连边,然后 \((i,t)\) 向 \((i+1,t)\) 连边,只有 \((-1,t)\) 向 \((-1,t-1)\) 连边。\(S\) 向 \((0,0)\) 连边,\((-1,0)\) 向 \(T\) 连边。从小到大枚举答案跑最大流即可。

注意每次跑最大流的时候都是在上一次跑完的残量网络上跑,因此最大流的答案需要累加。

3. 飞行员配对方案问题

Luogu P2756 飞行员配对方案问题

二分图最大匹配板子,直接跑最大流即可得出最大匹配数。

考虑方案,显然在残量网络中,匹配上的一对之间的连边的流量变成了 \(0\)。因此可以枚举残量网络中所有的边,判断这条边的流量是否为 \(0\) 来得出方案。

4. 软件补丁问题

Luogu P2761 软件补丁问题

(口胡解法)直接跑状压。

5. 太空飞行计划问题

Luogu P2762 太空飞行计划问题

(因为输入格式太恶心了所以就口胡了)将实验与仪器的依赖关系建成二分图,流量为 \(\infty\);从 \(S\) 向实验连实验的报酬为流量的边;从仪器向 \(T\) 连仪器费用为流量的边。然后跑最小割即可。

方案就扫一下所有边,看那些边的流量为 \(0\) 就说明这条边被割掉了,其他流量不为 \(0\) 的就表示保留了实验或者仪器。

6. 试题库问题

Luogu P2763 试题库问题

建二分图然后直接跑最大流即可,方案判断是否流量为 \(0\)。

7. 最小路径覆盖问题

Luogu P2764 最小路径覆盖问题

对于一个路径,显然路径上的每一个除了终点的点的出度均为 \(1\)。因此考虑将所有点拆点成两个点 \(i_1,i_2\)。那么对于一条边 \(u\to v\),可以转换成为 \(u_1\to v_2\),由于 \(i_1\) 最多匹配一个 \(j_2\),因此这就被转化成为了一个二分图匹配问题,套板子即可。

对于输出方案,可以用并查集判断每条路径上的点,然后看哪一个点没有入度就将这个点作为路径起点输出即可。

8. 魔术球问题

Luogu P2765 魔术球问题

从小到大枚举答案。假设 \(i+j=k^2(k\in \N^*)\),那么从 \(i\) 向 \(j\) 连边,最终一定会形成一个 DAG。然后就转化成为了最小路径覆盖问题,用那道题的做法即可解决。考虑什么时候找到答案,显然是当点数 \(\text{num}\) 减去最大流 \(\text{ans}\) 大于了 \(n\) 的时候为答案,即 \(\text{num}-\text{ans}>n\)。

枚举答案的时候,注意每次都在上一轮的残量网络上跑最大流,因此答案需要累加。

9. 最长不下降子序列问题

Luogu P2766 最长不下降子序列问题

第一个问题直接 DP 即可。

第二个问题和第三个问题基本相同。

将每个下标按照 \(f_i\) 值分层,\(f_i\) 层的点只能和 \(f_i-1\) 层的点相连。那么从 \(S\) 向 \(f_i=1\) 的 \(i\) 连流量为 \(1\) 的边,然后对于 \(f_i=t\) 的 \(i\),从 \(j<i,a_j\le a_i,f_j=t-1\) 的 \(j\) 连一条流量为 \(1\) 的边。对于 \(f_i=\max\limits_{1\le j\le n} f_j\) 的 \(i\),向 \(T\) 连一条流量为 \(1\) 的边,然后跑最大流就解决了问题二。

对于问题三,可以将 \(S\) 向 \(i=1\) 连的边的流量改为 \(\infty\),\(i=n\) 向 \(T\) 连的边(如果存在)的流量改成 \(\infty\),然后再跑一次最大流即可。

10. 航空路线问题

Luogu P2770 航空路线问题

将回路拆成两条从 \(1\) 到 \(n\) 的路,然后直接跑最大流即可。

如果出现只能到达 \(1,n\) 两个点的情况需要特判一下。

11. 方格取数问题

Luogu P2774 方格取数问题

将格子按照棋盘的方式进行黑白染色,相邻格子连边形成二分图,然后跑最小割。

12. 机器人路径规划问题

Luogu P2775 机器人路径规划问题

错题,不做。

13. 圆桌问题

Luogu P3254 圆桌问题

直接建二分图跑二分图匹配即可。

14. 骑士共存问题

Luogu P3355 骑士共存问题

与方格取数问题相同,按照棋盘方式黑白染色,然后将两个骑士能攻击到的位置连边,跑最小割。

15. 火星探险问题

Luogu P3356 火星探险问题

源点向机器人的起点连边,机器人的终点向汇点连边,对于每一个石头都拆点成入点和出点,入点和出点之间先连一条流量为 \(1\),费用为 \(1\) 的边,然后再连一条流量为 \(\infty\),费用为 \(0\) 的边。然后跑最大费用最大流。

对于方案,还是通过看残量网络中那些边被流过多少流量进行判断是否被经过以及被经过多少次。

16. 最长 k 可重区间集问题

Luogu P3358 最长k可重区间集问题

区间的端点作为特殊点。相邻两个特殊点之间连一条流量为 \(\infty\),费用为 \(0\) 的边,然后对于一个区间,从左端点向右端点连一条流量为 \(1\),费用为区间长度的边。源点向最靠左侧的特殊点连一条流量为 \(k\),费用为 \(0\) 的边。然后跑最大费用最大流即可。

17. 最长 k 可重线段集问题

Luogu P3357 最长k可重线段集问题

与最长 k 可重区间集的建模方式基本一致。不过因为可能出现线段的左右端点的 \(x\) 坐标一样,因此需要将每一个特殊点拆点。如果线段左右端点不一样,那么就从左端点的出点连向右端点的入点;否则,从左端点的入点连向左端点的出点。然后将费用更改为线段的长度,跑最大费用最大流。

18. 汽车加油行驶问题

Luogu P4009 汽车加油行驶问题

(口胡)将图按照剩余油量分层,然后就很板了。

19. 孤岛营救问题

Luogu P4011 孤岛营救问题

令 \(f_{i,j,s}\) 表示当前位置在 \((i,j)\),并且拿到钥匙的状态是 \(s\) 的最短时间,用广搜来转移即可。

20. 深海机器人问题

Luogu P4012 深海机器人问题

与火星探险问题完全一致。

21. 数字梯形问题

Luogu P4013 数字梯形问题

每个点拆点成为入点和出点。从源点向梯形最顶层的 \(m\) 个点连流量为 \(1\),费用为 \(0\) 的边。

  • 对于第一个问题,每个点的入点向出点连流量为 \(1\),费用为点权的边。向左下和右下的点的入点连流量为 \(1\),费用为 \(0\) 的边。
  • 对于第二个问题,每个点的入点向出点连流量为 \(\infty\),费用为点权的边。向左下和右下的点的入点连流量为 \(1\),费用为 \(0\) 的边。
  • 对于第三个问题,每个点的入点向出点连流量为 \(\infty\),费用为点权的边。向左下和右下的点的入点连流量为 \(\infty\),费用为 \(0\) 的边。

跑最大费用最大流即可。

22. 分配问题

Luogu P4014 分配问题

直接建立二分图跑二分图最大带权匹配即可。

23. 运输问题

Luogu P4015 运输问题

与分配问题一样,跑二分图最大带权匹配。分别用最小费用最大流和最大费用最大流各跑一遍即可。

24. 负载平衡问题

Luogu P4016 负载平衡问题

可以计算出最终状态下每个仓库存储的货物数量,如果一个仓库存多了,那么就从源点向该仓库连流量为 \(\Delta a\),费用为 \(0\) 的边;如果少了那么就从该仓库向汇点连流量为 \(\Delta a\),费用为 \(0\) 的边;相邻两个仓库之间连流量为 \(\infty\),费用为 \(1\) 的双向边,然后跑最小费用最大流即可。

标签:24,费用,infty,Luogu,网络,流量,问题,入点
From: https://www.cnblogs.com/hanx16msgr/p/17182545.html

相关文章

  • 计算机基础_网络协议2.TCP、HTTP、HTTPS
    三次握手和四次挥手详细原理,为什么要使用这种机制?当进行第一次握手,网络不好可能会堵塞,所以连接的请求并没有到达服务器端;但是tcp连接有超时重传的机制,所以再一次发送请求,......
  • Windows server 2008 R2 无法启用网络发现
    问题描述:就算在高级共享设置中启用网络发现并保存修改也会变回关闭网络发现解决方法:打开服务设置(win+R在运行栏里输入services.msc),开启以下三个服务FunctionDisco......
  • 计算机基础_网络协议1.协议
    理解什么是协议?互联网的实现,分为好几层。每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做"协议"了解TCP/IP网络协议......
  • [黄河流域公安院校网络安全技能挑战赛]Babyre RE
    查壳一下,64位ELF文件带UPX壳轻车熟路脱壳,啪的一下很快啊,就脱壳失败了给我整不会了,尝试用IDA远程调试手动脱壳也没成功陷入僵局之时,通过查询知道可能是修改了UPX!特......
  • Win10怎么设置有线网络和WiFi网络优先级?
    这个名词可能会让某些用户感到陌生,所谓“跃点”,即路由。一个路由为一个跃点。数据传输过程中需要经过多个网络,每个被经过的网络设备点(有能力路由的)叫做一个跃点,地址就是它......
  • 计算机网络整理
    目录考试 4第一章 5第二章物理层 5第三章数据链路层 5第四章网络层 5第五章传输层 6第六章应用层 6计算机网络基础 7网络基础概念 7计算机网络的功能 7计......
  • Python网络编程server端和client端代码
    #client端代码importsocketclient=socket.socket()client.connect(('127.0.0.1',3999))whileTrue:content=input('>>>')client.send(bytes(content,'ut......
  • LCCL网络:相互指导博弈来提升目标检测精度(附源代码)
    前言 目标检测一般包括分类和回归两个子任务。在模型训练的过程中,本文依据回归任务的预测结果动态分配分类任务的标签,同时利用分类任务的预测结果来分配回归任务的标签,以......
  • 机器学习日志 手写数字识别 pytorch 神经网络
    我是链接第一次用pytorch写机器学习,不得不说是真的好用pytorch的学习可以看这里,看看基本用法就行,个人感觉主要还是要看着实践代码来学习总结了几个点:1.loss出现nan这......
  • 杂题小记(2023.02.24)
    杂题小记(2023.02.24)目录杂题小记(2023.02.24)更好的阅读体验戳此进入LG-P5251[LnOI2019]第二代图灵机题面SolutionCodeLG-P3765总统选举题面SolutionCodeUPD更好的阅读体......