首页 > 其他分享 >网络流

网络流

时间:2023-09-23 16:46:36浏览次数:29  
标签:餐巾 网络 最小 建图 早上 我们 rightarrow

酒店之王

考虑到 房间 和 食物都和客人有关, 而 房间 和 食物间没有明显关系, 我们考虑将 客人放在所建图的中间, 以此来联系。 而这时一个从源点出发到达汇点的流即表示既选择了想要的房间, 又选择了想要的食物。

但我们考虑一个问题, 由于每个人想要的房间可能不止一个, 那么由房间转移到一个客人再转移到食物的流可能不止一个, 即造成每个人可能选择了两份不同的他喜爱的房间和食物, 这个人的答案统计了两遍。

为了解决这个问题, 我们要设法强迫每个人只能选择一个房间, 即只有一个流可以通过一个客人节点转移到食物上。 因此, 我们有以下建图的方法 :

最小路径覆盖问题

小M的作物

首先, 像这种二选一的问题, 我们一般联想到最小割。

从模型的角度考虑, 最小割实际上是将一个图分割成两个不相连的部分所需的最小代价。 对应到这个题上来讲, 我们的最小代价实际上就是那些我们无法满足的条件的价值和。 将图划分成两个部分, 实际上对应每个节点选择在 A 处 还是 在 B 处。 至于那些留下来的, 指向源点 和 汇点的边, 即为两个部分分别产生的价值。

这样的话, 我们该如何建图?

对于单独的作物种植, 由于 A 和 B 间没有直接联系, 我们将作物放在中间, 源点 和 汇点分别在两边引出 A 和 B 的具体位置。 这样的话, 我们的 \(S - T\) 割就势必要将 \(A \rightarrow u\) 和 \(u \rightarrow B\) 这两条边之一切断, 来保证 \(S\) 和 \(T\) 的不连通性。

对于组合的作物来讲, 我们也考虑上述方式, 构造一种建边方式使得 我们要么计算 组合的价值, 要么放弃组合的价值。

至此, 我们只需要求出最小割, 再用总价值减去它即可得到最终答案。

人员雇佣

相较于 小M的作物, 这道题提供了更一般的情况, 即使组合的一部分也会具有意义。

我们不可能对每两个经理建立一个组合, 这样会使点数达到 \(O(n ^ 2)\)。

考虑类似 小M的作物 的建图方式建议如下图所示 模型 :

推文详解

奶牛的电信

这个题很明显是求最小割的问题。 但不同点是, 这里割的是 点 而不是边。
直接建图跑最小割所得到的是最少需要中断几条通信线路。

既然我们不能拆边, 那么我们将原图中的边容量设为 INF; 既然我们可以以 \(1\) 的代价拆点, 那么我们将图中的点一分为二, 分别记录入边 和 出边, 对于 拆开的两个点, 我们用容量为 \(1\) 的边连接, 表示拆除它的代价。

圈地计划

我们考虑类似于 小M的作物 建图。

寻找这种组合的规律,我们发现:

我们考虑转化题意,将两个位置要选择不一样才会有附加权值 转变为
变成了两个位置集合相同才会有附加权值。

简单来讲,我们将哪些 原来是 \(S \rightarrow x\) 的边等价变换为 \(x \rightarrow T\),哪些 原来是 \(x \rightarrow T\) 的边等价变换为 \(S \rightarrow x\)。通过这种方式,我们使一个点 连线 集合 A 和 它周围的点 连线 集合 B 的边集中到一个集合中,以方便处理。

最后求一遍最小割即可。

餐巾计划问题

一般来讲, 如果一个事件 发生时是有阶段的, 我们可以考虑将该事件按照阶段划分拆成几个点, 分别维护该阶段发生的特殊条件。

对于本题来讲, 我们考虑如下的建图方式 :

  1. 从原点向每一天晚上连一条流量为当天所用餐巾 \(x\) ,费用为 \(0\) 的边, 表示每天晚上从起点获得 \(x\) 条脏餐巾。

  2. 从每一天早上向汇点连一条流量为当天所用餐巾 \(x\),费用为 \(0\) 的边,每天白天, 表示向汇点提供 \(x\) 条干净的餐巾, 流满时表示第 \(i\) 天的餐巾够用。

  3. 从每一天晚上向第二天晚上连一条流量为 INF,费用为 \(0\) 的边,表示每天晚上可以将脏餐巾留到第二天晚上(注意不是早上,因为脏餐巾在早上不可以使用。

  4. 从每一天晚上向这一天 + 快洗所用天数 \(t_1\) 的那一天早上连一条流量为INF, 费用为快洗所用钱数的边,表示每天晚上可以送去快洗部,在地 \(i + t_1\) 天早上收到餐巾 。

  5. 同理, 从每一天晚上向这一天 + 慢洗所用天数 \(t_2\) 的那一天早上连一条流量为 INF,费用为慢洗所用钱数的边, 表示每天晚上可以送去慢洗部, 在地\(i + t_2\) 天早上收到餐巾 。

  6. 从起点向每一天早上连一条流量为 INF, 费用为购买餐巾所用钱数的边, 表示每天早上可以购买餐巾。 注意,以上 \(6\) 点需要建反向边! \(3 \sim 6\) 点需要做判断(即连向的边必须 \(\le n\))

修车

试题库问题

家园 / 星际转移问题

Collectors Problem

标签:餐巾,网络,最小,建图,早上,我们,rightarrow
From: https://www.cnblogs.com/ademik/p/17724617.html

相关文章

  • iperf3:网络测试工具及测试用例+参数详解
    1,iperf3简介iPerf3是用于主动测试IP网络上最大可用带宽的工具。它支持时序、缓冲区、协议(TCP,UDP,SCTP与IPv4和IPv6)有关的各种参数。对于每次测试,它都会详细的带宽报告,延迟抖动和数据包丢失。它与原始iPerf不共享任何代码,也不向后兼容。它是一个C/S架构的测试工具,需要在同时运......
  • 远程连接问题处理“远程计算机需要网络级别身份验证,而你的计算机不支持该验证。请联
    1.问题描述  本地机器与远程服务器连接时(初次连接),提示如下错误:远程计算机需要网络级别身份验证,而你的计算机不支持该验证。请联系你的系统管理员或技术人员来获得帮助。2.问题处理  a.开始-运行-输入“gpedit.msc”,进入“本地组策略编辑器”。  b.本地计算机策略-->计......
  • Docker 部署 redis 网络集群
    Docker部署redis网络集群##1.创建网卡dockernetworkcreateredis--subnet172.38.0.0/16#2.通过脚本创建六个redis配置forportin$(seq16);\do\mkdir-p/mydata/redis/node-${port}/conftouch/mydata/redis/node-${port}/conf/redis.confcat<<EOF>......
  • 网络拥塞控制算法总结-PolyCC
    字节跳动在SIGCOMM'23以Poster形式提交了一篇论文《PolyCC:Poly-AlgorithmicCongestionControl》,试图将各种拥塞控制算法整合到一个统一的框架里。其理由是近40年来各种渠道发布的各种拥塞控制算法,没有一种算法能解决所有网络场景(不同的应用,不同的流量模型等)。 如上图,PolyCC......
  • kylin 设置网络
    kylin设置网络chmod+x/etc/rc.d/rc.local #授权重启nohup/usr/local/las/program/network/bootup.sh&>>/etc/rc.d/rc.local #开机自启root@liuzonglin:~#catbootup.sh#!/bin/bash#/etc/resolv.confnameserver114.114.114.114echo"nameserver......
  • 软件定义网络实验一实验二报告
    实验一实验结果截图实验二实验结果截图总结在本次实验中,实验一较为简单,没有遇到较大的麻烦。但是实验二的操作过程中,因为不少细节问题,使得我在一些步骤反复操作了许多遍。在添加流表的输入代码环节,由于写代码时习惯性的打空格导致最后代码错误,找了很久才找出来错误。由......
  • Kubernetes中的容器网络流量管理实践案例
    前言Kubernetes是一个流行的容器编排平台,它提供了许多功能,包括容器网络流量管理。在本文中,我们将深入探讨Kubernetes中的容器网络流量管理实践案例。容器网络流量管理Kubernetes中的容器网络流量管理是一个非常重要的功能,它可以帮助我们管理容器之间的通信。在Kubernetes中,每个......
  • 《动手学深度学习 Pytorch版》 7.6 残差网络(ResNet)
    importtorchfromtorchimportnnfromtorch.nnimportfunctionalasFfromd2limporttorchasd2l7.6.1函数类如果把模型看作一个函数,我们设计的更强大的模型则可以看作范围更大的函数。为了使函数能逐渐靠拢到最优解,应尽量使函数嵌套,以减少不必要的偏移。如下图,更复......
  • 如何理解网络协议时水平的,有事垂直的
    为了减少网络设计的复杂性,绝大多数网络采用分层设计方法。所谓分层设计方法,就是按照信息的流动过程将网络的整体功能分解为一个个的功能层,不同机器上的同等功能层之间采用相同的协议,同一机器上的相邻功能层之间通过接口进行信息传递。为了便于理解接口和协议的概念,我们首先以邮政通......
  • python+playwright 学习-83 page.expect_response()捕获网络返回数据
    前言expect_response()方法可以捕获接口返回的数据,在爬取网页数据时非常有用。expect_response()使用官方文档示例withpage.expect_response("https://example.com/resource")asresponse_info:page.get_by_text("triggerresponse").click()response=response_inf......