网络流24题
详细讲解网络流24题
Michael-Li
这个作者很懒,什么都没留下…
展开
-
网络流24题——1.飞行员配对方案
题目链接https://www.luogu.org/problemnew/show/P2756前言做了好多天模拟赛,感觉网络流还是非常重要的,然而学习网络流模型最好的就是网络流24题,所以决定一道一道的学习网络流24题,在博客里进行总结。真实目的:增加访问量飞行员配对方案网络流24题中相对简单的一题,题面大家可以到luogu里面去看。 这是一道非常显然的二分图匹配问题,可以用匈牙利算法解决。 不原创 2018-04-20 22:16:06 · 143 阅读 · 0 评论 -
网络流24题——2.太空飞行计划问题
题目链接https://www.luogu.org/problemnew/show/P2762太空飞行计划我们从S向所有实验连流量为收入的边(割这条边选择不做这个实验) 从所有的机器向T连边(割这条边表示卖这个机器) 实验向机器连INF的边 然后我们求最小割。 这样我们就满足了如果一个实验要选,那么它所有对应的机器要买,或者这个实验不选,那么直接失去这个实验的收入。 最后的总收入就是所有实原创 2018-04-21 19:45:54 · 148 阅读 · 0 评论 -
网络流24题——3.最小路径覆盖问题
题目链接https://www.luogu.org/problemnew/show/P2764#sub最小路径覆盖问题先给出一个定理:DAG的最小路径覆盖=定点数-对应的二分图最大匹配 对应的二分图指的就是把原先每个顶点拆成入点和出点之后所得到的二分图(所有入边连入入点,所有出边从出点连出)。 我们感性的理解一下,设顶点个数为n,刚开始每个点上有一条只覆盖自己的边,然后我们把一个入点a1到一个出原创 2018-04-21 20:54:44 · 219 阅读 · 0 评论 -
网络流24题——4.负载平衡问题
题目链接https://www.luogu.org/problemnew/show/P4016#sub负载平衡问题这道题可以用数学方法来做,具体可以到luogu的题解里去看,写的都很好。 但还是这句话,既然是网络流专题,我们就用网络流的方法。 首先可以把所有库存量取平均值设为res,就是最后每个仓库剩下来的货物,对于每个出口的仓库(即库存量大于平均值),从S连一条容量为a[i]...原创 2018-04-22 21:49:00 · 172 阅读 · 0 评论 -
网络流24题——6.魔术球问题
题目链接https://www.luogu.org/problemnew/solution/P2765魔术球问题这道题有很多奇奇怪怪的做法,比如打表,贪心,这些方法本文不进行讲解,本文讲解的是用最大流(二分图匹配)来解决。 讲讲博主的思考历程,如果把这个图建出来,编号小的向编号大的连边,条件是他们的和为平方数,那么得到一个DAG,每一根柱子相当于是一条图上的路径,每条路径之间不能...原创 2018-04-26 19:41:44 · 218 阅读 · 0 评论 -
网络流24题——9.试题库问题
题目链接https://www.luogu.org/problemnew/show/P2763试题库问题可以发现这道题有点类似二分图匹配,唯一不同的是每个类型的数量有限制,我们回顾一下用最大流时的做法,设两边集合为A,B,S向A连流量为1的边,A向B连流量为1的边,B向T连流量为1的边,这样保证了每对AB只会产生一的贡献,那么我们这里所有B(表示类型)向T连的边的流量改为该题目联系...原创 2018-04-26 21:37:36 · 118 阅读 · 0 评论 -
网络流24题——10.圆桌问题
题目链接https://www.luogu.org/problemnew/show/P3254圆桌问题与前一道试题库问题非常的向,我们借鉴他的思想,我们设单位的集合为A,桌子的集合为B,对于每个单位人数x,从S向A连一条流量为x的边,对于每张桌子能坐y个人,我们从B向T连流量为y的边,那么每一条S-A-B-T的路径表示这个单位的人坐在B这张桌子上,由于每张桌子每个单位只能坐一个人,...原创 2018-04-27 19:03:06 · 422 阅读 · 0 评论 -
网络流24题——11.分配问题
题目链接https://www.luogu.org/problemnew/show/P4014分配问题非常经典的模型,就是一个带权的二分图最大匹配,要求满足最大匹配的同时权值最大,那么我们显然想到费用流,A类点向B类点连边的时候费用设为贡献就行了,最大贡献的话spfa跑最长路,最小贡献spfa跑最短路就行了#include<cstdio>#include<a...原创 2018-04-27 20:02:53 · 263 阅读 · 0 评论 -
网络流24题——12.骑士共存问题
题目链接https://www.luogu.org/problemnew/show/P3355骑士共存问题我们首先将这个网格图黑白染色,我们把会互相攻击的点黑向白连边,显然同颜色的点不会互相攻击,所以得到一张二分图,我们去一个点表示我将骑士从这个点上拿走,最后使得每条边至少有一端被拿走,这刚好就是二分图最小顶点覆盖问题,然后我们知道二分图最小顶点覆盖=二分图最大匹配,所以网络流跑个...原创 2018-04-28 21:09:24 · 270 阅读 · 0 评论 -
网络流24题——13.方格取数问题
题目链接https://www.luogu.org/problemnew/show/P2774方格取数问题这道题与上一道骑士共存问题非常的类似,首先也是黑白染色得到一张二分图,S向黑连边,白向T连边,流量均为点权,然后黑点与会起冲突的白点连边,那么如果有一条从S-黑-白-T的路径,证明有冲突,我们以割掉这条边(黑点与S的连边,白点与T连边)表示拿走这个点,希望剩下的权值最大,所以模...原创 2018-04-29 11:04:52 · 122 阅读 · 0 评论 -
网络流24题——14.最长不下降子序列问题
题目链接https://www.luogu.org/problemnew/show/P2766最长不下降子序列问题第一问我们直接dp,记maxans为最长不下降子序列的长度。 第二问我们跑最大流 因为每个点只能用一次,我们把每个点拆成两个点,入点和出点,所有连入的边连入点,连出的边连出点。入点和出点连流量为1的边。 然后S向每个dp值==1的点连边,流量为1。每个dp值==m...原创 2018-04-29 18:17:51 · 185 阅读 · 0 评论 -
网络流24题——15.最长k可重区间集问题
题目链接https://www.luogu.org/problemnew/show/P3358最长k可重区间集问题先离散化,要去重,设去完重之后点数为size,每个点向后面一个点连流量为k,费用为0的边,当然,S向1连,size向T连,然后每条线段的左端点向右端点连流量为1,费用为区间大小的边,然后跑最大费用最大流就行了。 我们考虑每个点有两个决策,一个是走到下一个点,表示不取任...原创 2018-04-29 21:30:43 · 188 阅读 · 0 评论 -
网络流24题——16.最长k可重线段集问题
题目链接https://www.luogu.org/problemnew/show/P3357#sub最长k可重线段集问题和15非常的像,大家可以先看15再看本篇博客。 这道题就是长度的求法变了,当然这个并不会影响建边方法,还有就是这道题中一条线段可能会与x轴垂直,为了解决这一问题,我们把所有横坐标都∗∗*2,然后左端点++。对于那些垂直x轴的线段,就把左端点++改为左端点–即可...原创 2018-04-30 10:46:58 · 176 阅读 · 0 评论 -
网络流24题——17.运输问题
题目链接https://www.luogu.org/problemnew/show/P4015运输问题S向仓库建容量为库存,费用为0的边,商店向T建容量为需求量,费用为0的边。 仓库向商店建容量为INF,费用为费用的边,跑费用流就行了。比较简单,不解释了。#include<cstdio>#include<algorithm>#include&l...原创 2018-04-30 11:09:32 · 395 阅读 · 1 评论 -
网络流24题——18.深海机器人问题
题目链接https://www.luogu.org/problemnew/show/P4012#sub深海机器人问题考虑每条边的贡献只能算一次,那我们就连一条流量为1,费用为贡献的边,但是还要保证能走过去,所以再连一条费用为0,流量为INF的边,然后S向每个起点连流量为INF的边,终点向T连流量为INF的边就好了,当然这两种边的费用都是0,最后跑一个最大费用最大流就行了。...原创 2018-04-30 12:46:11 · 257 阅读 · 0 评论 -
网络流24题——19.数字梯形问题
题目链接https://www.luogu.org/problemnew/show/P4013数字梯形问题先讲一下这道题的边相交指的是连续两次走到同一个点。 第一问:如果点不想交显然边也不相交,所以我们只要把每个点拆成两个点,中间连流量为1,费用为这给点的贡献的边,S连第一行,最后一行连T,第i行连第i+1行,费用为0,流量为INF,最大费用最大流跑一发就行了。 第二问:每个点...原创 2018-04-30 15:06:43 · 154 阅读 · 0 评论 -
网络流24题——20.航空路线问题
题目链接https://www.luogu.org/problemnew/show/P2770航空路线问题我们把模型转换一下,相当于求两条从起点到终点的路径使得这两条路径除了起点和终点没有重复点。一看到一个点只能走一次就想到拆点,把每个点拆成入点和出点,连流量为1,费用为1的边,每条航线连流量为2,费用为0的边,这里一定要流量大于等于2,如果流量为1,那么起点和终点直接相连的话,这...原创 2018-05-01 09:25:06 · 689 阅读 · 0 评论 -
网络流24题——21.餐巾计划问题
题目链接https://www.luogu.org/problemnew/show/P1251餐巾计划问题我们把每一天拆成早上和晚上,早上的流表示这天有多少干净的毛巾,晚上的流表示这天有多少脏的毛巾 建边分成6类,用A表示早上,B表示晚上 1.从i.A到T连流量为这一天的需求,费用为0的边,表示我这天需要这么多毛巾 2.从S到i.B连流量为这一天的需求,费用为0的边,表示我这...原创 2018-05-01 13:51:39 · 139 阅读 · 0 评论 -
网络流24题——22.火星探险问题
题目链接https://www.luogu.org/problemnew/show/P3356火星探险问题这道题和18深海机器人问题基本相同,只要把有障碍物的点的连边全部删掉就行了原创 2018-05-01 14:16:31 · 310 阅读 · 0 评论 -
网络流24题——23.家园
题目链接https://www.luogu.org/problemnew/show/P2754家园首先判断无解,把每一艘飞船能到的所有点都并查集并起来,判一下月球和地球是否联通就行了。 和分层图很像,每个新的时刻新建一层,把每艘飞船这个时刻的起点和终点连一条流量为飞船容量的边,每个点从上一层连一条容量为INF的边,然后每次跑一边最大流,如果最大流大于等于k了,表示我所有人都能到了...原创 2018-05-01 15:16:20 · 166 阅读 · 0 评论