网络流及建模专题(下)

前言

不断更新中…
专题的(下)篇将介绍网络流的一些奇奇怪怪的应用和费用流有关的一些套路。

本专题暂时包含三道题:

洛谷P1251 餐巾计划问题: 费用流的基本应用
Trade Gym - 100212I: 使用网络流对图论中的边进行调整
codeforces 818G - Four Melodies: 费用流压缩建图


洛谷P1251餐巾计划问题

题意

见题目链接

题解

这道题我们把选取一张餐巾纸当作是一个单位的流量,那么显然来源部不同的餐巾纸,他们的费用是不相同的,这就引出了费用流(最小费用最大流)的模型。

一天可以在早上接受r[i]r[i]数量的餐巾纸,同时也可以将r[i]r[i]数量的餐巾纸送去清洗,所以我们需要将每一天拆成两个点,分别表示需要餐巾纸的点送走餐巾纸的点

需要餐巾纸的点与汇点TT连边,容量为r[i],费用为00。还要和源点S连边,容量为r[i]r[i],费用为pp,这代表购买新的餐巾纸的方式。
送走餐巾纸的点需要和两个点进行连边:

  • 送去慢洗,则需要和n天以后的需求点连边,容量为infinf,费用为慢洗一条的费用。

    • 送去快洗,则需要和mm天以后的需求点连边,容量为inf,费用为快洗一条的费用。
    • 注意,由于一条餐巾纸洗完了可以存放任意时间,所以我们需要在相邻需求点之间连立一条费用为00,容量为inf的边,代表的含义就是餐巾纸在存放。

      如图所示:
      这里写图片描述

      优化:由于BB累点之间有边相连,表示餐巾纸可以存放到下一天,那么,我们可以把S>B的边省略掉,只保留S>1BS−>1B这条边,表示所有新购买的餐巾纸都在第一天买好,然后存放到需要的那一天再使用。

      优化图如下:
      这里写图片描述

      这样建图完成以后,跑一个最小费用最大流就可以了。
      注意:请检查你的板子速度是否可行,我的板子速度就太慢了,zkw费用流模板了解一下。

      参考代码 略


      Trade Gym - 100212I

      题意

      给出A、B两个点集,A、B之间有边相连,而A和B的内部均无边相连。
      题目要求求出最多删除A、B之间的多少边,才能使得A中点的度数至少都为2,B中点的度数也至少都为2。

      题解

      先求出每个点的度数,从每个点v出发,最多能删除deg[v]2deg[v]−2条边(注意这里是理想情况下,不一定能删除这么多)。
      那么我们就可以建立一个超级源点SS和超级汇点T,从SSA点集连边,边的容量为deg[v]2deg[v]−2,从BB点集往T点连边,边的容量为deg[u]2deg[u]−2
      AAB之间的边流量全为11
      S点流到TT的每一个为1的流量,都相当于在原图里面删除了这条边。
      跑一边最大流,就可以得到最多能删除多少边了。在残余网络中做一些小操作就可以把剩余的边输出出来。
      网络图如下:
      这里写图片描述

      总结

      网络流可以用于对图论中的边进行调整,当图论中的一条边存在流量流过的时候,代表该边被“调整”了,调整可以具有很多含义,比如本题中的“删除”也算“调整”。

      参考代码 略


      Four Melodies

      题意

      题目链接

      给出nn个数,输出选四个不相交的melody的所有情况中,4个melody长度总和的最大值。

      要形成Melody,要求相邻的数字要么相差1,要么相差77的倍数。

      题解

      一种很直观的建图方法就是把每个数字拆成2个点inoutout,然后源点也拆成2个点sss,并把ss′作为费用流的源点。

      s>ss′−>s建立一条容量为44费用为0的边。然后从ss点向每个in建立一条容量为11,费用为0的边。

      再从ininoutout建立一条容量为11,费用为1的边。从outout向汇点tt建立一条容量为1,费用为00的边。

      然后对于任意两个node.i,j如果iij符合相邻的22个条件,那么就从i的out点向j的inin点连接一条容量为11费用为0的边,表示他们可以串起来。

      这样的话,建图的复杂度为O(n2)O(n2),边的个数也为O(n2)O(n2),复杂度太高了,因此需要压缩建图。

      奇技淫巧:当你找不到任何优化的点的时候,可以考虑搞一个出错率极小的做法,有一个想法就是每个点仅向后面50个点连边。

      怎么压缩建图呢?

      把每个点都扩充成3个点in,mid,outin,mid,out,其中ininmidmid 连边容量为11,费用为1midmidoutout连边,容量为11,费用为0

      ininoutout连边容量为infinf,费用为00,表示途径这个点。

      关键的一步来了:
      从i这个点往后找第一个使得val[i]=val[j]+1的点jj,从i.outj.inj.in连接一条容量为11,费用为0的边。
      ii这个点往后找第一个使得val[i]=val[j]1的点jj,从i.outj.inj.in连接一条容量为11,费用为0的边。
      从i这个点往后找第一个使得val[i]val[j]%7==0(val[i]−val[j])%7==0的点jj,从i.outj.inj.in连接一条容量为11,费用为0的边。
      这样的话,图就算压缩完成了(不需要两两比较建图)。
      图举例:
      这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7.4 下 如何部署 AspNetCore 结合 consul

上篇我们讲到consul的概念,以及在WIN下如何使用: 在Windows 下如何使用 AspNetCore Api 和 consul步骤如下:1、安装虚拟机VM 2、下载安装 CentOS 7.4(地址就不提供了)这是安装示例: VM虚拟机安装CentOS 示例…

【SPFA】最优贸易(luogu 1073)

最优贸易 luogu 1073 题目大意: 有n个城市和m条线路连接着这些城市(当编号为1时是有向,2时是无向),从1城市出发到n城市,每个城市都有固定的水晶球价格(进价和售价一样)&#xff0…

Razor Page Library:开发独立通用RPL(内嵌wwwroot资源文件夹)

Demo路径:https://github.com/yanshengjie/RPL.Demo1. IntroductionRazor Page Library 是ASP.NET Core 2.1引入的新类库项目,属于新特性之一,用于创建通用页面公用类库。也就意味着可以将多个Web项目中通用的Web页面提取出来,封装…

Problem H Rock Paper Scissors,FFT

题目 题目链接 题意 给出两段石头剪刀布的顺序SS和T" role="presentation" style="position: relative;">TT,其中TT要短一些,现在让你把T" role="presentation" style="position: relative;">TT往SS的…

.NET Core微服务之基于Ocelot实现API网关服务

一、啥是API网关?API 网关一般放到微服务的最前端,并且要让API 网关变成由应用所发起的每个请求的入口。这样就可以明显的简化客户端实现和微服务应用程序之间的沟通方式。以前的话,客户端不得不去请求微服务A(假设为Customers&am…

[译]RabbitMQ教程C#版 - 发布订阅

先决条件本教程假定RabbitMQ已经安装,并运行在localhost标准端口(5672)。如果你使用不同的主机、端口或证书,则需要调整连接设置。从哪里获得帮助如果您在阅读本教程时遇到困难,可以通过邮件列表联系我们。1.发布/订阅…

用ASP.NET Core 2.1 建立规范的 REST API -- 缓存和并发

本文所需的一些预备知识可以看这里: 用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 和 用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) 准备项目建立Richardson成熟度2级的POST、GET、PUT、PATCH、DELETE的RESTful API请看这里:用ASP.NET Core …

2017 SEERC Divide and Conquer 树上差分

题目 题目大意:给出两颗树的复合图(即这张图是由两颗树拼起来的),询问最小割掉多少条边,可以使得图不联通,并输出方案数。 分析 我觉得这是一道很难的题目,因为比较难想,前提结论比较多。 首先我们需要…

青蛙跳荷叶

青蛙跳荷叶 题目大意: 有n个点,从1开始到跳完这些点,且每次的距离不能相等,一个点不能到多次 原题: 题目描述 从前,有一个小青蛙决定去荷叶上练习跳跃.现在有n个荷叶排成一排,小青蛙一开始…

基于 Consul 实现 MagicOnion(GRpc) 服务注册与发现

0.简介0.1 什么是 ConsulConsul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。这里所谓的服务,不仅仅包括常用的 Api 这些服务,也包括软件开发过程当中所需要的诸如 Rpc、Redis、Mysql 等需要调用的资源。简而言之 Con…

【DFS】排排坐

排排坐 题目大意: 有n个方块,有一些是黑色,有一些是白色,可以点击一个方块使它和它旁边的方块反转颜色(黑变白,白变黑),问最少要点多少次才能将方块 们 变成目标的方块们&#xff…

用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

预备知识: 用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) 准备项目建立成熟度2级的 API请看这里:用ASP.NET Core 2.0 建立规范的 REST API -- GET 和 POST, 用ASP.NET Core 2.0 建立规范的 REST AP…

华为资深工程师:码农很多,但程序员并不多......

“春节假期,与几位友人小聚,大家互道工作顺利、平安健康云云......期间一位驰骋商界多年的老友问:“你现在在华为做什么工作呀?”我很骄傲地说:”系统架构师“,可是他却愣了很久。但当我老婆在旁边补上一句“码农“时…

VS2017 15.8第二个预览版本提升了对CPU Profiling和F#的支持

VS2017 15.8第一个预览版本的特性包括对ARM64构建的支持、ASP.NET Core对Docker的支持以及重新引入LibMan。在15.8的第二个预览版本中,微软发布了一个新Google Android模拟器的预览功能,它能够与Hyper-V兼容。这样的话,最新的Android模拟器就…

ASP.NET Core Razor生成Html静态文件

一、前言最近做项目的时候,使用Util进行开发,使用Razor写前端页面。初次使用感觉还是不大习惯,之前都是前后端分离的方式开发的,但是使用Util封装后的Angular后,感觉开发效率还是杠杠滴。二、问题在发布代码的时候&…

一文看懂.NET的各种变体

曾几何时,我们只有一个.NET,叫作.NET Framework。如果想要开发.NET应用程序,只要使用.NET Framework即可,非常简单。几年之后,出现了.NET变种的寒武纪大爆发(我们称之为“.NET大爆炸”)&#xf…

【最短路】【Floyed】医院设置(ssl 1614)

医院设置 ssl 1614 题目大意: 有n个点,在一个点上安医院,使这个点到其他点的最短路之和最小 原题: Description 设有一棵二叉树(如右图)。其中,圈中的数字表示结点中居民的人口。圈边上数…

拓展 NLog 优雅的输送日志到 Logstash

在上上篇博客通过对aspnetcore启动前配置做了一些更改,以及对nlog进行了自定义字段,可以把请求记录输送到mysql,正式情况可能不会这么部署。因为近期也在学习elk,所以就打算做一个实例,结合nlog把日志输送到logstash&a…

曼哈顿距离与切比雪夫距离的转化及prufer序列

目录 曼哈顿距离与切比雪夫距离的相互转化prufer序列 1. 曼哈顿距离 与 切比雪夫距离 的相互转化 曼哈顿距离 |x1−x2||y1−y2|max(x1−x2y1−y2,x1−x2−y1y2,−x1x2y1−y2,−x1x2−y1y2)|x1−x2||y1−y2|max(x1−x2y1−y2,x1−x2−y1y2,−x1x2y1−y2,−x1x2−y1y2)|x_1 - x…

[译]如何在.NET Core中使用System.Drawing?

你大概知道System.Drawing,它是一个执行图形相关任务的流行的API,同时它也不属于.NET Core的一部分。最初是把.NET Core作为云端框架设计的,它不包含非云端相关API。另一方面,.NET Core是跨平台框架,它不包含任何操作系…