网络流
文章平均质量分 63
Grit_ICPC
Dielts
展开
-
HDU 4280 Island Transport (网络流)
题目大意:给定n个点的坐标,m个的点之间关系,即游客从i到j之间的流量。问从最西边到最东边能够运输的客人流量的最大值(/每小时)。思路:直接见图找到源汇点跑最大流。#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <queue>#define inf 0x3f3f3f3fu原创 2016-03-23 23:14:18 · 417 阅读 · 0 评论 -
盒子嵌套问题 (二分图||费用流)
题目大意:给定n个盒子,并且有们的长宽,一个盒子可以放到 另一个长宽<=自己长宽的盒子中,求最会的最小占地面积。思路:可以用二分匹配做,按照面积排序,注意和按照边长排序的区别,然后从大到小进行匹配(因为先要把大的进行匹配之后才匹配小的,否则小的匹配完了之后剩下下对面积大的盒子占地也会多)#include <iostream>#include <cstring>#include <cstdio>原创 2016-03-23 23:21:03 · 1308 阅读 · 0 评论 -
POJ 3680 Intervals (最大费用最大流)
大意:给定n,k分别代表n段线段,累加的线段不会超过k次。问最后所以的累加最大和是多少。思路:最大费用最大流,刚上来建图弄错了。建成了原点与每个点都有流量为K,费用为0的边。这样显然是错的。那么就需要建源点到1点流量为k的边,同理cnt到ed点也有流量为k的边。就保证了不会超过k次。但是注意边和边之间的连线因为都是同一性质的点所以直接短点相连即可。(PS:1离散化 2.求解最大值,所以建图要用复权)原创 2016-04-26 17:27:01 · 469 阅读 · 0 评论 -
HDU 2686 Matrix||HDU 3376 Matrix Again (拆点费用流)
大意:从(0.0)到(n-1,n-1)然后再返回起点,并且每个点只能走一次(从左上到右下走每次只能选右下方的路来走,同理右下到左上选走上的点来走),求最大点权值。思路:针对这一个来回的过程,发现起终两个点走两次,所以流量为2,每点走一次所以可以拆点i'点连接j点这样的话可以保证返回的时候拆的点之间的流量为0,因此不能通过。最后设置一个源点,一个会点,流量也为2即可。(注意:1、数组 2原创 2016-05-24 10:16:44 · 407 阅读 · 0 评论 -
HDU 4862 Jump (最大费用流 | 经典建图)
题目大意:有n*m个方格,每个方格都一个的十进制一位的数。你可以操作K次。对于每一次操作,你可以选择一个出发点向下或向右Jump。跳的花费是|x1-x2|+|y1-y2|-1的能量 。如果你跳的这两个位置上数字相同,那么你就会获得数字表示的能量值。对于每一次操作,你可以这样跳任意次 ,但是每个位置只能经过一次在这K次操作中。初始能量值是0,当操作完成后,如果n*m个原创 2016-05-25 09:30:25 · 422 阅读 · 0 评论 -
POJ 2135 Farm Tour (最小费用最大流)
大意:从1点走到n点然后再返回到1点,前提是所有的路程只能够走一次。思路:因为从原点走到n点然后再走回来需要走源点两次,所以流量为2.因为所有的路都是双向图,即需要建四条边。#include<iostream>#include<cstdio>#include<cstring>#include<map>#include<queue>#include<algorithm>#define MA原创 2016-04-30 12:51:30 · 452 阅读 · 0 评论 -
HDU 4067 Random Maze (最小费用最大流)
#include #include#include#include#include#include#include#include#define inf 0x3f3f3f3f#define LL __int64using namespace std;const int N = 8000;int sum,head[N],cost,flow,cnt;struct node{原创 2016-05-25 11:36:09 · 376 阅读 · 0 评论 -
ACdream 1171 Matrix sum (有界费用流)
Descriptionsweet和zero在玩矩阵游戏,sweet画了一个N * M的矩阵,矩阵的每个格子有一个整数。zero给出N个数Ki,和M个数Kj,zero要求sweet选出一些数,满足从第 i 行至少选出了Ki个数,第j列至少选出了Kj个数。 这些数之和就是sweet要付给zero的糖果数。sweet想知道他至少要给zero多少个糖果,您能帮他做出一个最优策略吗?原创 2016-05-26 19:37:29 · 373 阅读 · 0 评论 -
UVA 10806 Dijkstra, Dijkstra. (费用流||最短路)
大意:从1到n然后再返回到1,每条路都只能走一次,最短路是多少。思路1:可以用费用流建图,因为起始点和终点可以走两次所以源汇点流量为2.如果能返回的话肯定flow是>=2的,才能构成回路。思路2:我们可以先找到最短路,然后将路径上的正向权值改为inf,反向权值为原来的相反数。#include #include#include#include#includ原创 2016-05-26 21:45:36 · 520 阅读 · 0 评论 -
POJ 2175 Evacuation Plan(费用流消负环)
大意:给出N个建筑物的坐标和里面的人数。给出M个防空洞的坐标和能容纳的人数。一个人的花费定义为从他的建筑物到目标防空洞的曼哈顿距离再加1。现在有人已经设计了一个避难方案。要你判断他给出的方案是否是所有人花费最少的解决方案,如果不是,请给出一个花费更小的解决方案(不必是最优)。思路:我们可以把,负环中的所有点找到,然后跑费用流,输出残余网络。#include #include#i原创 2016-05-30 17:46:07 · 756 阅读 · 0 评论 -
SDUT 2414 An interesting game(最大费用流)
#include<map>#include<queue>#include<cmath>#include<cstdio>#include<stack>#include<iostream>#include<cstring>#include<algorithm>#define LL long long#define inf 0x3f3f3f3f#define eps 1e-8#def原创 2016-03-20 20:37:31 · 478 阅读 · 0 评论 -
ZOJ Missile 3460 (最大流+二分)
题目大意:给定n,m,t1,t2,v分别代表n个导弹发射器,m个物体,发射前的准备时间t1秒,每个导弹发射器发射后经t2分钟才能分社下一个炮弹,速度为v,然后m+n行为m个物体坐标,n行为导弹发射器的坐标.问最后摧毁所有的目标需要的时间是多少。思路:很明显是最大流的问题。因此还是建图的问题。每个导弹发射器攻击目标可能之前发射了0,1,…m-1次导弹,所以把每个导弹发射器拆成m个,所以共有n*m个发射原创 2016-03-16 09:40:55 · 563 阅读 · 0 评论 -
Machine Schedule HDoj (二分图最小顶点覆盖--最大匹配数)
Machine ScheduleTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6865 Accepted Submission(s): 3446Problem DescriptionAs we all kno原创 2015-08-03 20:57:10 · 665 阅读 · 0 评论 -
POJ Power Network (dinic)
题目大意:给定n个点,a个发电站,b个用户,m个线路,求最大流的问题.思路:要改成单源单汇点来进行处理.#include#include#include#include#include#include#include#include#define ll __int64#define inf 0x3f3f3f3fusing namespace std;int n原创 2015-10-29 21:59:11 · 451 阅读 · 0 评论 -
HDU 3572 Task Schedule(dinic)
大题思路:这道题可以另外的添加一个原点一个汇点,其中汇点需要处理一下,将每个任务和源点相连流量为完成的天数,然后将任务和所控制完成的时间范围内的所有点相连,流量为1,最后就是所有的区间和汇点相连流量为机器的数目.判断一下是否满流就可以.#include #include #include #include #include #include #include原创 2015-11-20 20:14:44 · 414 阅读 · 0 评论 -
HDU3549 网络流入门题(Dinic)
#include #include #include #include #include #include #include#define inf 0x3f3f3f3f#define ls l,mid,rt#define rs mid+1,r,rt#define maxn 10000000using namespace std;struct原创 2015-11-16 22:05:26 · 524 阅读 · 0 评论 -
HDU 1532 Drainage Ditches(Dinic)
网络流dinic模板:#include#include#include#include#include#include#include#include#define ll __int64#define inf 0x3f3f3f3fusing namespace std;int n,a,b,c,cnt,head[2000],l[2000];struct node原创 2015-10-29 18:30:05 · 401 阅读 · 0 评论 -
POJ 1087 A Plug for UNIX(Dinic)
思路:设一个超源和超汇,分别连向用电器和插座,那么n个插座就要和汇点相连,所以汇点设的尽可能的大。m个用电器和插头,就要连在一起,且超源与用电器相连,(以上都是一一对应cap为1),最后适配器之间相连,因为适配器有无数个所以cap为inf;然后一边最大流即可。#include#include#include#include#include#include#include原创 2016-01-21 10:41:09 · 410 阅读 · 0 评论 -
POJ 3436 ACM Computer Factory(拆点+前向星dinic)||(拆点+邻接矩阵dinic)||(不拆点+dinic))
题目大意:就是第一行两个数p,n分别代表电脑零件的个数,和有多少机器。接下来的n行每行2*p+1个数,第一个数为机器工作的效率,其余代表机器加工前和后电脑的变化,求机器一起工作的最大效率,并输出路径。思路:由于源点的流入和普通链接点的流入,可能会大于当前点的容量,因此拆点.那么,怎么再判断有多少个机器用到了呢,这就要原来机器的工作效率,和剩余网络,如果原来的工作效率大于剩余网络那么一定原创 2016-01-22 10:52:49 · 662 阅读 · 0 评论 -
Going Home POJ 2195 (最小费用最大流)
思路:最小费用最大流与最小割的区别就是有了一个变量记录费用的问题,并且在反向建图的时候费用为负值。在建好图之后不停的找最短路,知道到终点的时候不存在最短路时停止。求解最小费用最大流时,就是用伴随网络来更新,原理和最短路的方法更新最大流类似。边找最短路,边更新可行流。#include#include#include#include#include#include#defi原创 2016-01-22 19:36:31 · 547 阅读 · 0 评论 -
POJ 2516 Minimum Cost (最小费用最大流)
题目大意:就是有n个商家然后n行是对应每个商家对k件物品的需求量。然后m行分别代表每个供应区可以提供k件物品的数量,下面是k个n*m的矩阵代表第k个物品,从j供应区运到i需求商的费用。思路:我们可以分k次求最小费用最大流。这题挺简单的就是源点连供应区,供应区连供应商,供应商连汇点。但是注意数组一定要开大!否则可能WA。#include#include#inclu原创 2016-01-24 11:27:04 · 516 阅读 · 0 评论 -
POJ 3281 Dining (dinic+拆点)
题目大意: 有n头牛,并且分别有f,d种食物和饮品。接下来是n行每行前两个数f1,d1分别是代表当前事食物和饮品的编号。求最大可能让牛得到喜欢的套餐。思路:第一次才知道什么是拆点的问题,对于此题就是为了保证牛只吃一份套餐。然后是建图问题,我们可以让牛放在食物和饮料之间并将牛拆分,注意下标!。同时将Map[i][i+n]自己和自己相连。#include#includ原创 2016-01-13 21:18:57 · 423 阅读 · 0 评论 -
HDU 1853 Cyclic Tour (最小费用最大流+环的判断)
题目大意:找出图中所有的环并且计算他们的最小环的权值和。思路:我们可有用费用流的最终流量和图中点数相比较,如果流量==点数,直接输出费用即可。#include#include#include#include#include#include#include#include#define LL int#define inf 0x3f3f3f3f#de原创 2016-05-21 21:27:10 · 431 阅读 · 0 评论