网络流
Dan__ge
Today is difficult,tomorrow is more difficult,but the day after is beautiful.
展开
-
POJ 1698 图论之网络流
点击打开链接题意:T组数据,每组第一个为n,表示有n演出,接下来的九个数前七个表示周一到周日,如果为1,可以在这天演出,后两个数代表演出多少天才算完成任务和在多少周之前必须演出结束,问这个人可以完成这些要求吗思路:用最大流解决,建立一个源点和一个汇点,将源点与每一个节目相连,流量为这个节目需要的天数,然后将这个节目与每星期可以演出的日子连一条流量为1的边,最后将所有可以演出的日子与汇点连一原创 2016-03-20 13:50:42 · 1497 阅读 · 0 评论 -
POJ 2112 二分图
点击打开链接题意:K个机器制造牛奶,一天可以制造M个牛的,每个牛与机器都有距离,下面的矩阵就是距离,问满足所有牛都被生产了牛奶,与机器最远的牛的距离是多少思路:最远的距离最小,好吧一看就知道要用二分,关键是二分的条件,看题目意思是满足所有的牛都被生产过,这就是二分条件,那么如何判断所有牛的条件呢,可以发现是二分匹配的模型,源点连机器,机器连牛,就可以判断牛的条件了,二分的距离判断时就是如果原创 2016-04-21 16:31:22 · 1690 阅读 · 0 评论 -
POJ 2594 二分图最小路径覆盖
点击打开链接题意:将所有点都连起来至少需要多少条路径思路:二分图的最小路径覆盖,而最小路径覆==图的顶点数-图的最大匹配,而当初还学习过最小顶点覆盖==最大匹配,而最小顶点覆盖需要连双向边,结果除以2,那是因为1-->2时,点1和点2都已经用过,所以我在连一个相应的一条边,代表这两个点不能在用了,样例详见hdu 1054 第二组。而接下来的求最小路径覆盖的最大匹配我们就只能是单向的,这个为原创 2016-04-21 20:21:34 · 1661 阅读 · 0 评论 -
POJ 2195 最小费用流
点击打开链接题意:给个乱七八糟的方阵,H代表家,m代表人,现在所有人都要回到一个家,问所有人走到家的步数和思路:还是很好想到费用流的,费用为人走到家的步数,求最小,流量即为人的个数,连边的话,每个人都连到家的容量为1,费用为步数的边,建立超级源点与人相连,容量为1,费用为0,家与超级汇点相连,一样容量为1肥育馆为0,跑最小费用流就是结果了,PS:入门题,还是蛮简单的.........#in原创 2016-04-21 20:41:46 · 1480 阅读 · 0 评论 -
51nod 1442 最大流
点击打开链接题意:中文了思路:最大流求解,源点连城市流量ai,城市连汇点流量bi,下面的边是无向图,拆点后建有向的就可以了,最后判断满流#include #include #include #include #include #include #include using namespace std;typedef long long ll;const int inf=0原创 2016-05-09 10:32:29 · 1386 阅读 · 1 评论 -
HDU 3435 费用流
点击打开链接题意:给个无向的图,问你删除任意边后,使这个图是哈密顿图,若有多个,输出路径上的所有权值和最小,没有就输出NO思路:今天开始从10年多校开始刷题,敌人留给我们的时间不多了,这题看完题意后,看了看样例,自己yy了一下,写了一发,交了ac,看了样例后我是这样想的,因为是哈密顿图,那么每个点肯定是走了两次,而图是无向图,和求最大匹配有些类似,然后就瞎YY的过了#include #i原创 2016-06-07 15:42:07 · 1412 阅读 · 0 评论 -
HDU 3572 网络流
点击打开链接题意:n个工作,m个机器来完成,每个工作有P,S,E,P代表这个工作需要P天,而S为最早开始的时间,E为最晚结束时间,每个机器在固定时间只能做一个工作,问所有的工作能否在规定时间内完成思路:因为每一天的机器只能做一个工作,那么天数肯定是一部,就是二分图的右部,然后左部应该是什么呢,那就是n个工作了,然后流量,对于每个工作来说,它需要的天数就是源点到工作的流量,然后工作到右部的就原创 2016-06-28 13:43:38 · 1528 阅读 · 0 评论 -
HDU 3468 网络流+BFS
点击打开链接题意:给一个地图,#不可走,*是金子,然后一个人从A开始走,它的下一个点必须是B,以此类推,而且他走的必须是最短路径,最短路径有多条的话随便哪条都可以,然后在走一次的时候,他在路过金子的时候可以捡一个金子,但是在一次路径内他只能捡一个金子,如果他不能将所有的字母全部走过,则输出-1思路:上午就开始写的一道题目,刚开始的思路是先将所有的金子点和字母点全部记下来,然后字母从A开原创 2016-06-14 14:51:02 · 967 阅读 · 0 评论 -
HDU 3472 网络流
点击打开链接题意:给n个串,是0则不可以反转,是1可以反转,问能否头尾相连的将所有串连在一起思路:做法是先判断一下图是否联通,用并查集判断就行,然后是先将图变成欧拉回路,那么只能有两种情况,没有奇度顶点,或者有两个奇度顶点,一个cnt大于0,一个cnt小于0,cnt代表的是一个点的入度减去出度的值,只有这两种情况才可以形成一个欧拉回路,但是如果是两个奇度顶点的话,需要将大于0的顶点连向小于原创 2016-06-15 12:52:05 · 1304 阅读 · 0 评论 -
HDU 3599 最短路+最大流
点击打开链接题意:给n个地点及许多边,现在问你要用最短时间内有多少种不相交的最短路思路:因为要的是最短路上的边,所以先跑最短路将满足的边全部拿出来建网络流的图,然后在跑个最大流就行了因为一条边只能用一次,所以网络流就行#include #include #include #include #include #include #include #include using n原创 2016-07-13 19:38:58 · 1642 阅读 · 0 评论 -
HDU 3491 最小割
点击打开链接题意:给个无向图,然后小偷从S走到H,然后在每个城市需要设置的警力给你,问你最小用多少警察可以将所有的小偷抓到思路:刚刚看完便看出就是个最小割吗,但是平常做的最小割是割的边,而这道题割的是点,一样的好吧,把点拆开,就变成割边了,然后唯一注意的是S和H这两个点不能设置警力,所以我们将这两个点的拆的边连一条inf的边,表示这里不能割,简单~~~~#include #include原创 2016-06-16 15:46:47 · 664 阅读 · 0 评论 -
HDU 3605 网络流
点击打开链接题意:n个人和m个星球,现在要求n个人全部住在这m个星球上,然后每个星球能居住的人数有上限,每个人还有自己喜欢的星球并且他只会去自己喜欢的星球,问能否成功思路:很明显的一个网络流,敲之交之TLE,然后返回来一看原来边太多了,但是我们可以发现星球还是很少的,那么与有一个背包想法类似,我们用状态压缩来代替左部,而右部还是星球,那么我们拿出一个状态来判断一下是否可以住在这个星球上来连原创 2016-07-14 16:14:08 · 1322 阅读 · 0 评论 -
HDU 3861 强联通分量+最小路径覆盖
点击打开链接题意:将所有的点分入几个集合中,要求若u可以到v,且v可以到u,那么u和v必须在一个集合中,且集合中的点必须满足对于任意一个点对(u,v)u能到v或者v能到u,问最少的集合满足条件思路:因为u到v且v到u必须在一个集合,那么可以用强联通分量进行缩点,然后下一个条件是对集合中的所有点对,那么这个集合可以形成的肯定是一条链类型的集合,那么就可以转化成选择几条链可以将所有的点(这个点原创 2016-07-27 09:07:03 · 545 阅读 · 0 评论 -
HDU 3616 最小割
点击打开链接题意:给一个地图,0代表敌人的位置,-1代表不能走的,然后大于0的代表草堆可以点燃,数字代表的就是点燃需要的时间,现在让你点燃一些草堆使得敌人怎么也不能走出去,问所需要的最短时间思路:这与从1走到n,割掉几条路使得走不到n是一个意思,那么就是最小割的模型,那么也比较好办,图建成两部就行,但是不是二分图,左部是敌人出发的点也就是0的所有点,右部自然就是所有的草堆了,然后这题呢意思原创 2016-07-16 13:54:57 · 630 阅读 · 0 评论 -
HDU 5352 最大流
点击打开链接题意:共有三种操作,1是代表可以将与1在一个联通块的点修复,但是最多只能修复k个,修好的点不会在破坏,2代表连接u与v,3是破坏p条道路,问最多可以修多少个点,多种情况输出字典序最小的思路:每次的1我们直接暴力的将与它在一个联通块的点加进来,然后为了保证原创 2016-07-06 14:34:24 · 1251 阅读 · 0 评论 -
vijos 1352 最大权闭合图
点击打开链接题意:中文思路:就是个最大权闭合图,最大利润就是总利润减去最大流#include #include #include #include #include #include #include using namespace std;typedef long long ll;typedef unsigned long long ull;const int inf原创 2016-09-14 10:59:51 · 347 阅读 · 0 评论 -
SGU 176 有源汇上下界的最小流
点击打开链接题意:n个节点,m条路径,接下来m行a,b,c,d,如果d等于1,则a到b的流量必须为c,如果d等于0,流量可以为0到c,问如果有可行流,最小流量和每条边的流量思路:最小流的解法与其他的不同,我们先将其变成无源汇的做法,建立超级源点和汇点,然后跑最大流,之后在加上汇点到源点的inf边,再跑最大流,如果满流则说明有解,不然无解,而最小的流量就是汇点到源点跑得流量,证明非常抱歉并不原创 2016-04-21 12:53:18 · 1914 阅读 · 0 评论 -
POJ 3228 网络流+二分&并查集
点击打开链接题意:有n个城镇,第一行是金矿和金子数量,然后第二行是装金子的地方和能装的数量,在下面是m条道路,问你选择的道路中最大值最小,使得所有金子运到装金子的地方思路:最大值最小,根本不用考虑一看就是二分,然后想了想就是个网络流的模型嘛,很简单,被坑了几次道路是双向的,改过之后A掉,然后看了看讨论还可以用并查集写,这里两种方法都写了,先是网络流的直接二分最大值,然后满足条件的边建模型,原创 2016-05-28 12:26:11 · 3239 阅读 · 0 评论 -
POJ 2396 有源汇上下界判断可行解
点击打开链接题意:有一个n行m列的数列,每行元素和的值和每列元素和的值给了你,下面有元素取值的限制条件,如0 0 > 1代表的是这个数列的所有元素都大于1,0代表的就是所有,0 1就是所有行的第一个元素,1 0就是第一行,然后判断是数列在满足这些条件的情况下是否有解思路:给的条件就是给你上界和下界,然后这题是有源汇点的,源点连行,列连汇点,与HDU4975类似hdu 4975,然后就是将有原创 2016-04-20 15:53:57 · 1443 阅读 · 0 评论 -
HDU 1054 最小定点覆盖
点击打开链接题意:一个顶点要一个人放哨,则和他相连的几个定点就不需要人放哨了,问最少需要多少人放哨思路:很明显的题意,很明显的最小顶点覆盖,最小顶点覆盖=最大匹配,建个双向边,结果除2,我的二分图匹配一直是用最大流写的#include #include #include #include #include #include #include using namespace s原创 2016-04-01 13:39:51 · 872 阅读 · 0 评论 -
HDU 4292 最大流
点击打开链接题意:有n个人,每个人都有自己喜欢的食物和饮料,如果一个人不能得到自己的喜欢的,则他将离开,问如何分配可以使剩下的人最多思路:刚刚写的时候还以为是二分图匹配呢,无情wa,之前写过POJ的3281,一个类型嘛,没有区别,改了之后A之,这里解释一下为什么牛会和牛在连一条容量为1的边,这是因为如果一个牛可以匹配好多食物和饮料,如果不限制的话,这一个牛就可以匹配多种食物,但是我们要的是原创 2016-04-04 13:05:31 · 1014 阅读 · 0 评论 -
hdu 5294 最短路+最大流
点击打开链接题意:题目要求1走到n的路程为最短路的路径,但是路径可能有多个,都要用,如果不是最短路径上的边就不走它了,第一个结果是问最少删除几条边1走不到n,第二个是最多删除几条边后,1仍能够走到n思路:我们要先求出最短路,并将路径上的边挑出来,然后建图,此时的图流量和时间都是1,因为最后的时候我们只要的是边的个数,这样求最小割=最大流就是第一个答案,然后求最短路ans[n],用总变数m减原创 2016-04-04 16:21:39 · 1335 阅读 · 0 评论 -
HDU 4289 最大流最小割
点击打开链接题意:给定的点中,每个点都有自己的权值,问从s走到d,删除几个点之后走不到了,且这几个点的权值最小思路:看着就像是最小割,直接模版敲完,因为权值在点上,而不是边上,所以要将点拆开,然后求最大流,无向边不用考虑太多,因为这些边并不影响整个网络的最大流作用只是将点联通而已,如a--b,则建a+n到b的无穷大,和b+n到a的无穷大,因为每个点的后续都是i+n,1#include #原创 2016-04-05 15:49:37 · 967 阅读 · 0 评论 -
HDU 4975 最大流+判断环
点击打开链接题意:给定的分别是每行值的和,每列值的和,每个元素的值在0~9之间,问有多少种情况符合条件,多种,一种和不可能分别输出三种情况思路:刚读完题根本没有思路,看了网上的才知道用网络流,那样的话就好办了,建个源点,与每行建一条流量为行和的边,每一列与汇点建一条流量为列和的边,每行与每列建一条流量为9的边,跑最大流后判断是否满流就行了,但是要怎么判断有没有多组解呢,当残余网络中有环时,原创 2016-04-08 12:21:19 · 2529 阅读 · 0 评论 -
HDU 4888 最大流+判环
点击打开链接题意:给定NxM的矩阵,每个点的元素在0~k之间,然后每行元素的和,每列元素的和,问能否有情况使条件符合思路:建个源点,与每行建一条流量为行和的边,每一列与汇点建一条流量为列和的边,每行与每列建一条流量为9的边,跑最大流后判断是否满流就行了,但是要怎么判断有没有多组解呢,当残余网络中有环时,我们可以调整这个环来符合条件,将一条边加1,则另一条边可以减去1,所以判断残余网络中有没原创 2016-04-08 15:21:49 · 888 阅读 · 0 评论 -
hdu 5093 最大流或二分图
点击打开链接题意:给个m行n列的矩阵,其中#代表冰山,*代表大海,o代表浮冰,现在要停一些船,船只能停在大海上,但是每一行每一列最多可以停一艘船,但是如果中间有冰山隔离的话,一行或一列可以停靠多艘,问最多可以停多少艘船思路:之前做过类似的,但是没有冰山这个限制,那个二分图直接用源点连行,列连汇点就行,这道题用二分图应该才是正解,我看了题意之后,感觉不到二分图的存在,根本没往那边想,但是还是原创 2016-04-25 21:02:06 · 3606 阅读 · 0 评论 -
HDU 4411最小费用流
点击打开链接题意:从0出发,1~N每个城镇有个小偷,我们要把他们全部抓到,我们可以派出k个警察,但是再抓i城镇的小偷之前,i城镇之前的所有城镇的小偷已经被抓了思路:哪有什么思路,看了网上的题解,为了将所有的点都跑到,我们将每个点拆成两个点,之间连一条容量为1,费用为-1000000的边,为什么这么连,这是为了保证每个点的跑到的条件,因为最小费用流的增广路径是通过最短路来完成的,这样我的点拆原创 2016-04-13 17:31:21 · 661 阅读 · 0 评论 -
HDU 4971 最大权闭合图
点击打开链接题意:n个工程,每个工程完成后会有利润,但是完成每个工程都需要克服一些难题,每个难题都会消耗资金,而且有的难题会有一些特殊要求,那就是在完成它的时候它希望有的难题已经完成,这会在输入下面的矩阵中体现出来思路:经典的网络流24题里面一道题的变形嘛,求最大权闭合图,这个也就等于利润总和-最小割,我的总利润就那么多,我希望的是消耗资金越少越好,也就是最小割,然后结果就出来了,但是和2原创 2016-04-13 20:43:04 · 714 阅读 · 0 评论 -
POJ 1087最大流
点击打开链接题意:有n个插座,还有n个用电器,每个用电器会选择自己用的插座,但只有一种,最后有k个转换器,输入a,b代表b插座可转化为a插座,问最后有几个用电器没有插座可用思路:最大流跑一边就行了,但是建边没想到这么麻烦,因为是字符串要每次都比较一下,比过之后建好图跑最大流,用m减去就行了#include #include #include #include #include #原创 2016-04-14 18:32:15 · 1716 阅读 · 0 评论 -
ZOJ 2314 有上下界的网络流
点击打开链接题意:给定m条边和n个节点,每条边最少的流量和最多的流量,保证每个节点的出入流量和相等,问可以形成吗,可以则输出每条边的流量思路:一道有上下界的网络流,因为有下界,说明我们每条边必须跑大于等于下界的流量,那我们可以转化一下,将下界设为必要边,也就是我们肯定会跑的边,而且这道题是没有源点和汇点的,所以我们要加这两个点,而对于一条边,a,b,low,high,我们a->b连的流量为原创 2016-04-15 13:15:38 · 3228 阅读 · 0 评论 -
ZOJ 3229 有上下界的有汇源的最大流
点击打开链接题意:有n天和m个女孩,每天我可以收集女孩的照片(单身狗来袭),但每天我最多可以收集D个照片,而且对于i好女孩,我这天最少收集L张照片,最多R张照片,并且每个女孩的照片至少要G[i]张,问能否收集成功,成功则输出每天每个女孩的收集量思路:昨天看了看上下界的题目,感觉还是蛮好理解的,今天哪这题开刀,本弱做了快一个下午才做出来,发现建图有个地方建错了,调了半天bug........原创 2016-04-16 15:43:08 · 4085 阅读 · 0 评论 -
HDU 5045 费用流求最大权
点击打开链接题意:有n个人和m到题目,每个人做对的概率以矩阵形式给出,问如何分配才可以使做对的概率最大,有一个限制条件是做到目前为止每两个人的做题数量差距不能超过1,也就是前n道题目,必须一人做一个思路:网上都是dp多一点,用网络流也可以,不过麻烦很多,可是本弱是一点dp都不会的选手啊,只能用网络流了,对于那个限制条件,我们可以以前n道题建一次图,然后再来n个,不过就直接建完就可以了,然后原创 2016-04-29 11:51:31 · 3851 阅读 · 0 评论 -
HDU 4685 强联通分量+网络流
点击打开链接题意:与POJ 1904 极其相像的一道题目,POJ的将一个完备匹配图给了你,并给了你一组可能的情况,很简单,但是这道题目,给的既不是完备匹配也没有给出可行的匹配方案,难的不要不要的思路:刚开始看以为是和1904一模一样呢,然而难度上升的真快,看了一下是13年的多校题目,过了10几个把,可想而知这难度不是我等能够A掉的,刚自己想的是只加王子使其变成完备匹配,然后WA了,对了说一原创 2016-05-24 19:27:48 · 4464 阅读 · 3 评论 -
HDU 4862 最小费用最大流+路径覆盖
点击打开链接题意:给个n行m列的数列,一个人可以走k次,每次选择一个未走过的点,这个点继续走的话,可以往下走或往右走,当然他可以跳着走,也就是可以跳到下面或右面任意一个位置,但前提是这个点没有走过,初始能量为0,从a,b走到c,d消耗能量是|a-c|+|b-d|-1;问走K次能否将所有点走到,并且每个点只能走一次,,成功的话输出最后可以剩下的最多能量思路:先要处理k次能否成功,想到了最小路原创 2016-04-29 18:33:15 · 5239 阅读 · 0 评论 -
HDU 4280 网络流SAP版
点击打开链接题意:给一个二维坐标,然后问你从最左边的点走到最右边的点的最大流量思路:题意简单明了的就是最大流,但是注意挑战程序设计的模版会超时,不知道为什么,也不会改模版,只能换kuangbin大神的SAP版网络流了#include #include #include #include #include using namespace std;typedef long long原创 2016-10-10 16:32:29 · 529 阅读 · 0 评论