网络流
文章平均质量分 60
A_Comme_Amour
胜利油田第一机房
展开
-
luogu2711 小行星(最小割)
题目传送门 题目大意:星云中有n颗行星,每颗行星的位置是(x,y,z)。每次可以消除一个面(即x,y或z坐标相等)的行星,但是由于时间有限,求消除这些行星的最少次数。题解又一次抄了题解。自己思考的角度就不对。我思考的建图从星星与星星之间连边跑最大流,也有想到在x y z 分别拆点,两个星星在哪个维度(xyz)相同就把相应的“分点”连接。(忽略以上) 正确的思考方式如下: 消灭...原创 2018-03-14 18:39:08 · 272 阅读 · 0 评论 -
[网络流24题]最小路径覆盖问题(二分图匹配)
题目传送门题解原理:最小路径覆盖数=点数-匹配数; 很好理解:两个点可以匹配,相当于是放到并查集里面,并查集的个数就是路径的条数; 但是我对建图的理解一直就是错误的; 我原来跑了二分图染色分成了两个集合,在里面跑二分图匹配;错误之处在于我错误的没有拆点; 于是我又认为每个点只能走一次,所以就每个点向所拆的点之间连了容量为1的边;错误之处在于电和点之间无法确立联系,没有调整的...原创 2018-03-23 19:34:17 · 608 阅读 · 0 评论 -
[网络流24题]魔术球问题(二分图匹配)
题目传送门题解和最小路径覆盖问题实际上是一道题,想一想,在每个路径上放球,不就相当于求出一条路径嘛?然而这道题是 “给出规定的路径数,求路径当中点的个数最多的一种方案”; 或许会想到类似星际战争的二分枚举,但这是多此一举的;因为柱子的个数随着球的个数单调不下降(想一想为什么;这里可以用反证:柱子的个数不会随着球的个数而减少),所以从头枚举就可以。 看这张图: 枚举球的个...原创 2018-03-23 22:02:22 · 265 阅读 · 0 评论 -
[bzoj1433][ZJOI2009]假期的宿舍(最大流)
题目传送门题解这个题想了很久。如何建图? 1. 有床的向汇点连边 2. 源点向需要床的连边,边权都为1 3. 跑最大流判断maxflow 是否和需要住宿的人tot相等即可代码倒很简单,关键在于怎么想到的。(待更新) 相当于是一个 需要床的 和 有床的 一个匹配 还是自行参悟吧代码#include<cstdio>#include<cstring...原创 2018-03-14 13:08:02 · 318 阅读 · 0 评论 -
luoguP1402 酒店之王(最大流)
题目传送门题解原本以为和飞行员的配对问题差不多,注意点的编号不要重复就可以了。天真地,房间->人->菜 然而一直WA,还是没有理解拆点的思想,以及建图还有错误 还是每个人复制一个点,原因是一个人不能同时连向房间和菜;否则,不拆点的话,一个人可能使用多次(他怎么可能同时住多个房间呢) S–>房间,房间–>人i,i–>i+n , i+ n –>...原创 2018-03-14 14:31:28 · 262 阅读 · 0 评论 -
[BZOJ1877][SDOI2009]晨跑(费用流)
题目传送门题解我菜到没有看出这是一道费用流的板子题; 每个点只能走一次,可以想到拆点的思想; 对于除了S和T的点,拆点的连边容量为1,费用为0; 其他的边的容量定为1,费用为路径长度,跑出最大流即为最大天数,最小费用和为最短路径;代码#include<cstdio>#include<cstring>#include<algorithm...原创 2018-03-20 22:06:37 · 282 阅读 · 0 评论 -
[bzoj1412][ZJOI2009]狼和羊的故事(最小割)
题目传送门题解这道题还挺简单的;要求割最小的边使狼和羊两个集合互不相交,一眼看出连边求最小割; 怎么建图呢?S向所有的羊,所有的狼向T,容量都是inf;在矩形中相邻的羊和狼连边,容量为1; 对于0的点怎么处理呢,我们把它默认为羊,羊向0, 0向狼连边即可容量均为1; 这么简单的题还没有1A,原来是我把0连向狼的边容量设为inf就WA了代码#include<...原创 2018-03-24 20:08:02 · 380 阅读 · 0 评论 -
「BZOJ1070」[SCOI2007] 修车(费用流)
题目传送门题解原本想到的是星际战争一样二分最大流。然而这题与其不同的是每个人修的车有先后顺序,某一人修某一辆车会受到上一辆车的影响,也就是这一辆车是这个人第几个和修的对于总时间的贡献有很大的影响(倒数第一个人修只需要花一倍的时间,倒数第二个人修需要花两倍的时间……)。 于是我们把每一种状态都拆成点,每一个人拆出n(车的数量)个点(共拆出n*m个点),每辆车都向这n*m和点连边,容量为...原创 2018-03-21 08:08:15 · 481 阅读 · 0 评论 -
「BZOJ2879」[Noi2012] 美食节(费用流+动态加点)
题目传送门题解这个和[SCOI2007] 修车实际上是一道题,用到了动态加点; 所谓的动态加点,刚开始每个厨师都连倒数第一个做的菜。跑完最大流后,对于找到增广路的厨师再给安排倒数第二个菜……这可以放在MCMF函数中实现。代码#include<iostream> #include<cstdio> #include<cstdlib>#...原创 2018-03-21 13:18:52 · 346 阅读 · 0 评论 -
bzoj 1834 [ZJOI2010] 网络扩容(费用流,残余网络)
题目传送门题解第一问最大流,在建图的过程中把费用设为0 第二问把边重新再原图上连一遍,容量为inf(实际上为k就可以),费用为输入,设置新的源点向原来的源点之间连边,容量为k、费用为0;这样再跑最小费用最大流的时候就会优先经过残留网络的边(因为其费用为0)因此求出来的就是最小扩容费用代码#include<cstdio>#include<cstring&...原创 2018-03-21 17:17:51 · 242 阅读 · 0 评论 -
[20180325 hu测]舞动的夜晚(最大流+Tarjan缩点)
题目传送门 Contest Hunter 是个好地方 题解首先感谢@xp学长的讲解 这是道网络流好题; 原来理解错了题意,然后WA的非常惨。并不是跑一个sb最大流输出方案; 也就是使二分图最大匹配减少的边的数量; 算法如下: 我们先随便跑出一个最大流,在残余网络上进行tarjan找强连通分量缩点,因为在一个无向图中的强联通分量意味这可以相互通达,割掉其中一条边后并不会...原创 2018-03-26 09:47:53 · 598 阅读 · 2 评论 -
[BZOJ1061] [NOI2008] 志愿者招募(最小费用最大流)
题目传送门题解这道题可以说代表了一类题。这道题和最长k可重区间集问题的建图方法是非常像的,并且这种问题都有两种建图方法,下面我来介绍一下; 我们暂且把这种问题叫做“选择区间问题”(口胡)吧;我考虑到当前点选择在某一个区间里面,会对“过去”产生影响,也会对“未来”造成影响(个人理解) 第一种建图方法:把每一天都拆点,点 i 到 i+n 容量为inf-a[i],费用为0,i+n到i...原创 2018-03-31 20:25:56 · 335 阅读 · 1 评论 -
[bzoj3130][SDOI2013]费用流(实数二分+最大流)
题目传送门题解稍微具有博弈的性质? Q :Alice在知道每条边的流量之前,怎能希望总费用尽量小? 正解: 对于BOB:我们可以得到把p全都给网络流中最大的边就是最忧的。这很好证明,因为我们要使加进去的费用发挥最大的作用,就把她放到最大流量的边上去,其他的地方都不如这种状况优; 对于ALICE:她肯定希望最大的边尽量小——二分;二分出一个值,放到最大流中验证; 注意是实数二分...原创 2018-03-20 08:33:44 · 254 阅读 · 0 评论 -
[USACO5.4]奶牛的电信(最小割)
题目传送门 最小割的点的数量题解一般的最小边求的是边的权值和,这里要求割掉的最少的点的数量。 原本以为割掉的最少的边的数量就是割掉的最少的点的数量。于是写了个最小割跑,失败了。 后来看到没有建双向边,于是建了但还是GG; 错误之处在于这张图 如果割点的话,我们只需要割掉红色的点;如果割边的话需要割掉两条边,这就是问题所在。那么如何处理呢?我们采用拆点的思想;对...原创 2018-03-13 17:15:04 · 394 阅读 · 0 评论 -
[BZOJ3993] [SDOI2015]星际战争(最大流+二分)
题目传送门题解如果让所用时间最少,那么就让每个激光武器的利用率最高。 对于每一个激光,都有多种决策——花多少时间攻击哪一个机器人,而最科学地利用激光器,就可以侠侣最高。 我们采用二分的思想,二分一个时间:t,使用最大流验证是否可以打完所有的机器人;S向激光器连边,容量为 t * t*b[i]);机器人向T连边,容量为a[i];可以攻击的关系连一条边,容量为inf(这里意味...原创 2018-03-19 19:01:46 · 440 阅读 · 0 评论 -
[bzoj1066][SCOI2007]蜥蜴(最大流)
题目传送门 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高度减1(如果仍然落在地图内部,则到达的石柱高度不变),如果该石柱原来高度为1,则蜥蜴离开后消失。以后其他蜥蜴不能落脚。任何时刻...原创 2018-03-15 11:37:48 · 245 阅读 · 0 评论 -
[网络流24题]方格取数问题(最大流最小割)
题目传送门 在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数。现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大。试设计一个满足要求的取数算法。对于给定的方格棋盘,按照取数要求编程找出总和最大的数。题解还是有关于配对的问题,与飞行员配对有相似之处 考虑这幅图,假设我们取数的时候从红色的点取完之后,要走到相邻的绿色的点,从绿色的点出发再取数。 ...原创 2018-03-15 14:47:15 · 618 阅读 · 0 评论 -
[CodeVs1227]方格取数 2 (费用流)
题目传送门 给出一个n*n的矩阵,每一格有一个非负整数Aij,(Aij <= 1000)现在从(1,1)出发,可以往右或者往下走,最后到达(n,n),每达到一格,把该格子的数取出来,该格子的数就变成0,这样一共走K次,现在要求K次所达到的方格的数的和最大题解做了几道网络流的题目,对建图有一些理解。 1. 超级源点和超级汇点分别连向(1,1)(n , n),容量为k,费用为...原创 2018-03-16 13:59:21 · 545 阅读 · 0 评论 -
[网络流24题]深海机器人问题(费用流)
题目传送门题解和方格取数2实际上是一道题 输入非常的恶心,不想多说代码#include<bits/stdc++.h> using namespace std; const int maxm=1050; const int maxn=1050; const int INF=0x3f3f3f3f; int s,t,tot,n,m; int a...原创 2018-03-16 14:50:11 · 307 阅读 · 0 评论 -
[网络流]学习笔记:一次理解网络流!
学一个新算法,总要翻多而杂的blog,收获不多。所以我就致力于把学习笔记总结,希望一遍看懂。 简单入门 (但是不全)一、从概念入手网络流用于解决流量问题网络流:所有弧上流量的集合f={f(u,v)},称为该容量网络的一个网络流.定义:带权的有向图G=(V,E),满足以下条件,则称为网络流图(flow network):仅有一个入度为0的顶点s,称s为源点仅有一个出...原创 2018-02-23 18:23:52 · 31677 阅读 · 13 评论 -
[网络流24题]最长不下降子序列问题(最大流)
题目传送门 给定正整数序列x1,…,xn 。(1)计算其最长不下降子序列的长度s。(2)计算从给定的序列中最多可取出多少个长度为s的不下降子序列。(3)如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长度为s的不下降子序列。题解题解来自网络流24题:【问题分析】第一问时LIS,动态规划求解,第二问和第三问用网络最大流解决。【建模方法】...原创 2018-03-18 22:11:15 · 313 阅读 · 0 评论 -
[网络流24题]最长k可重区间集问题(费用流)
题目传送门 题解考试的时候想到了费用流的一点东西,但是没有写出来,现在看来建图也挺简单的。 S向1,n向T分别连一条容量为k,费用为0的边,表示最多可以重叠k次; 每个点向下一个点连一条容量为inf,费用为0的边,表示一种连接关系; 对于每个区间,左端点向右端点连边,容量为1,费用为区间长度; 求最大费用最大流即可,注意离散化;代码#include<cs...原创 2018-03-18 22:14:24 · 572 阅读 · 0 评论 -
[BZOJ2400]Spoj 839 Optimal Marks(最小割)
题目传送门Description定义无向图中的一条边的值为:这条边连接的两个点的值的异或值。 定义一个无向图的值为:这个无向图所有边的值的和。 给你一个有n个结点m条边的无向图。其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小。在无向图的值最小的前提下,使得无向图中所有点的值的和最小。 Input第一行,两个数n,m,表示...原创 2018-03-18 22:16:09 · 242 阅读 · 0 评论 -
[网络流24题]飞行员配对方案问题
题目传送门 二分图最大匹配并输出方案问题题解二分图匹配算法可以通过经典的匈牙利算法实现;单笔者在这里使用最大流算法。 考虑一下二分图最大匹配与最大流的相似之处:最大匹配就说明所有的边(关系)都得到了最大的利用,所以和最大流有联系(个人理解,有错误请指正) 网络流难在建图,其实明白了上面的原理,建图方法也就呼之♂欲出: 建立超级源点S和超级汇点T; S向所有的外籍飞行员连边...原创 2018-03-12 22:15:04 · 552 阅读 · 0 评论 -
[网络流24题]圆桌问题(最大流)
题目传送门 假设有来自m 个不同单位的代表参加一次国际会议。每个单位的代表数分别为ri (i =1,2,……,m)。 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,……,n)个代表就餐。 为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐。试设计一个算法,给出满足要求的代表就餐方案。 对于给定的代表数和餐桌数以及餐桌容量,编程计算满足要求的代表就餐方案。...原创 2018-03-19 10:35:25 · 678 阅读 · 0 评论 -
[bzoj 1001][BeiJing2006]狼抓兔子(最小割)
题目传送门 割掉最小的边权,使得S和T不连通题解可以想到最小割? 最小割==最大流 昊哥说无向图不需要建0边;省空间,跑的快代码#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>us...原创 2018-03-19 12:12:15 · 277 阅读 · 0 评论 -
「BZOJ1934」[SHOI2007] 善意的投票(最小割)
题目传送门题解最小割好题。经典的二者取其一式问题; 我们将同意的和s连边,边权为一,将不同意的和t连边边权为1,朋友之间连边,边权还是一,这样一来,点与点之间就建立了联系,比如现在我要让一个原本统一的人不同意,在我们建立的图上面就相当于划掉他和他原来的点之间的连线,而割掉这一条边以后对于答案的贡献就是1,或者说让一个朋友和另外一个朋友产生矛盾,也只需要划去两个朋友之间的连线,同样...原创 2018-03-21 21:33:46 · 285 阅读 · 0 评论