
网络流
azheng51714
欢迎加入 老生畅坛 微信公众号
展开
-
hdu 2732 Leapin' Lizards 网络流 拆点构图
题意:一个矩阵里有n*m个方格,有些方格中有l长的柱子,没相邻的两个柱子间的间距是1m,有些柱子上面有蜥蜴,现在你的目的是要使这些蜥蜴尽可能多的跳出到方格以为,假设蜥蜴每次能跳d远,但是它每离开一根柱子,柱子的高度就会降低1m,问最多能有多少只跳不出去。。。#include#include#include#include#includeusing namespace std;c原创 2012-07-20 11:54:22 · 1186 阅读 · 0 评论 -
poj 3469 最大流 最小割
/*题意是说有两个cpu,现在给你N个模块,每个模块必须在两个cpu其中的一个中运行,给出每个模块在不同cpu中运行的耗费,并且如果两个不在同一个cpu运行的模块之间要交换数据的话需要额外的耗费........解法:建立超级源点 S,超级汇点 T;并对各个点拆点建立边(s,i,ai)和(i+n,t,bi) ,(i,i+n,inf),(u,v+n,w),(v+n,u,w);然后求最大流原创 2012-09-20 15:42:12 · 668 阅读 · 0 评论 -
poj 2112 最大流+floyd+二分答案
/*题目描述:k个机器,每个机器最多服务m头牛。c头牛,每个牛需要1台机器来服务。告诉你牛与机器每个之间的直接距离。问:让所有的牛都被服务的情况下,使走的最远的牛的距离最短,求这个距离。分析: 首先我们可以用floyd求出各个点的最短距离d[i][j]!然后构图:建图方式s->到每头牛建边容量为1,牛到机器建边容量为1,机器到t建边容量为m如果,max_原创 2012-10-14 17:11:06 · 481 阅读 · 0 评论 -
poj 2455 最大流+二分
题目:http://poj.org/problem?id=2455一开始以为用矩阵 d[i][j] 可以节省时间和效率的呢,不过后来考虑到那样可能会把边搞的少了许多!!导致WA了n次。。。。/*题目描述:题意:FJ有N块地,这些地之间有P条双向路,每条路的都有固定的长度l。现在要你找出从第1块地到第n块地的T条不同路径,每条路径上的路不能与先前的路径重复,问这些路径中的最长原创 2012-10-16 15:18:17 · 497 阅读 · 0 评论 -
poj 2391 floyd+二分+最大流
/*题意:有n块草地,一些奶牛在草地上吃草,草地间有m条路,一些草地上有避雨点,每个避雨点能容纳的奶牛是有限的,给出通过每条路的时间,问最少需要多少时间能让所有奶牛进入一个避雨点。*/#include #include #include #include #include using namespace std;#define M 41000cons原创 2012-10-16 18:41:30 · 561 阅读 · 0 评论 -
poj 2135 简单费用流
/*题意:给定一个无向图,要从1点到n点再返回1点,每条边最多走一次,问最短需要走多远。分析:最小费用最大流,把题意看成是要找两条无交集的从1到n的路线,使距离和最小。图中的点和边就是网络流图中的点和边。设置一个源,接到1点,设置一个汇,从n点接到汇。为保证无交集,我们把每条边的流量设置为1,而源发出的流量和汇接收的流量均为2。每条边的费用就是该边在原图中的权值。由于最短路原创 2012-10-22 12:44:11 · 819 阅读 · 2 评论 -
poj 2987 最小割 简单题目
/*题意简述:一个公司要裁人,给出裁每个人都有个盈利或者损失,如果一个人的上司被裁那么他也将被裁,现在问怎样裁才能使得公司的收益最大,最大为多少?分析:因为这里上司和下属之间存在一个依赖关系,下属存在的前提或者是必要条件是其上司的存在,所以这满足最大闭权闭合图的性质,用最大权闭合图求解即可这里注意:结果有可能会超过int,需用__int64或者long long*/#i原创 2012-10-22 14:53:58 · 696 阅读 · 0 评论 -
hdu 3996 最小割
/*题意: 有 n 个金矿,每个金矿开发需要一定的价值,开发之后可以获得一定的价值,而且一些金矿受到另一些金矿的限制,即开采这个金矿之前要开采 限制它的金矿,问最多可以获得多少价值。分析: 比较明显的最大闭合权图。 建图: 如果某个金矿的开发利润为正值,就在源点和该点之间连一条容量为该利润的边 如果某原创 2012-10-22 16:44:11 · 911 阅读 · 3 评论 -
sgu 326 最大流 不错的构图。。哦哦类。。。
326. PerspectiveTime limit per test: 0.5 second(s)Memory limit: 65536 kilobytesinput: standardoutput: standardBreaking news! A Russian billionaire has bought a yet undisclosed NBA te原创 2012-11-01 20:31:06 · 574 阅读 · 0 评论 -
whu 1124 最大流和sgu 326 思路一样
首先贪心,对于跟team N比的比赛,都是team N胜,给他加2分,这样就得到team N 的最好成绩记为limit对于普通的比赛,开始构图了,把每场比赛和每支队伍看做点,增加源点和汇点,源点与每场比赛连上容量为2的边(每场比赛最多给出2分),每场比赛与他的两个参赛队都连上容量为2的边(这样刚好满足三种结局的分配),然后对于每支队伍与汇点直接,如果这支队伍原有的分数大于limit-1,无解,原创 2012-11-01 21:03:12 · 451 阅读 · 0 评论 -
poj 3189 二分+枚举+最大流
Steady Cow AssignmentTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 4267 Accepted: 1503DescriptionFarmer John's N (1 <= N <= 1000) cows each reside in on原创 2012-10-25 13:12:26 · 946 阅读 · 0 评论 -
hdu 3376 && hdu 2686 最大费用最大流
Matrix AgainTime Limit: 5000/2000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others)Total Submission(s): 2120 Accepted Submission(s): 642Problem DescriptionStarvae very原创 2012-11-05 12:20:22 · 1763 阅读 · 0 评论 -
poj 1637 混合欧拉 最大流
Sightseeing tourTime Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other)Total Submission(s) : 1 Accepted Submission(s) : 0Problem DescriptionThe city executiv原创 2012-11-06 16:36:32 · 646 阅读 · 0 评论 -
poj 3308 最大割 最小割
ParatroopersTime Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 6 Accepted Submission(s) : 0Problem DescriptionIt is year 2500 A.原创 2012-11-08 13:56:06 · 792 阅读 · 0 评论 -
hdu 2686 Matrix 最小费用最大流
#include#include#include/*题目大意是给定一个n*n的矩阵,yifenfei从起点(1, 1)这个位置一直取数到(n,n),每取完一个数,下一个只能取当前数右方或者下方的一个数,(注意两个数之间的距离应该是1,之前以为下方或者右方任何一个数都可以取),就这样取到(n,n),然后再从(n,n)取回(1,1),这次每取完一个数,下一个只能取当前数左方或者右方的一原创 2013-01-15 13:30:00 · 408 阅读 · 0 评论 -
hdu 3416 最短路+最大流
题意: 有 n 个城市,知道了起点和终点,有 m 条有向边,问从起点到终点不相交的最短路一共有多少条。解法: 先dijstra(st),再dijstra(ed)一遍如果存在dist[u]+disd[v]+Edg[u].w==dis[ed] 那么将这条边加入网络中,最后求最大流即可!!/*题意: 有 n 个城市,知道了起点和终点,有 m 条有向边,问从起点到终点不相原创 2013-01-16 14:30:28 · 1625 阅读 · 0 评论 -
hdu 3998 最大流 (最多不相交路径)
/*类似于网络流24题中的一道(求最长上升子序列的最多个数):构图方案:首先求出LIS;然后拆点 建边Edge(i,i+n,1) 因为没个点只能用一次,所以边的容量为1然后对于每个dp[i]==1的建边Edge(s,i,1)dp[i]==k的建边Edge(i+n,t,1);dp[i]==dp[j]+1 建边Edge(j+n,i,1);然后sap 求最大流就OK了原创 2012-10-11 14:51:43 · 2394 阅读 · 0 评论 -
poj 2125 最小割 最大流
//在一个有向图中,对于每个点,有两个值,删除这个点入度的边,代价为w+,删除出度的边,代价为w- //用最小的代价移走所有的边 //最小割模型 因为是满流,所以等价于在这个图中的最小割中包含了选择入还是出//我们加入一个dfs对点进行标记,如果入点没有进,那么必定是出点,即选择了出点的边//反之一样,因为我们知道最终进过这个网络后,要么s-w+的满,要么w-到t满,只可能有一个满原创 2012-09-19 12:07:18 · 531 阅读 · 0 评论 -
Codeforces 164C 费用流
#include#include#include/*题意:给你n个任务,k个机器,n个任务的起始时间,持续时间,完成任务的获利每个机器可以完成任何一项任务,但是同一时刻只能完成一项任务,一旦某台机器在完成某项任务时,直到任务结束,这台机器都不能去做其他任务最后问你当获利最大时,应该安排那些机器工作,即输出方案具体建图方法:新建源汇S T对任务按照起始时间s按升序排序拆点:u原创 2012-10-10 14:22:15 · 1027 阅读 · 0 评论 -
hdu 3879 最大流最小割
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3879题意: 给出n 个联络点,并给出了建造每个联络点的费用,pi ;给出m个关系网,ai,bi,ci;分别表示 建造第ai和bi 联络点建造后收益!! 建筑师可以有选择的建造联络点!!为最大收益为多少!!题解: 建立超级源点 s,并将其和各个联络点原创 2012-08-06 16:51:36 · 597 阅读 · 0 评论 -
hdu 1853 最小费用最大流
/*一. 如果几个点构成一个环的话,那么这每一个点的入度与出度都是为1的.....二. 设一个源点0,汇点2*n+1,源点连接每一个u,容量为1,费用为0;汇点连接每一个v+n,容量也为1,费用为0;从u到v建一条边,容量为1,费用为w;那么这就转换成了最小费用最大流的模板题,假设最后最大流为n,那么说明恰好每一个点都是入度出度为1,即构成了环,从而得到题目做要求的。*/#inclu原创 2012-08-07 10:01:59 · 609 阅读 · 0 评论 -
poj 2195 最小费用最大流
题意: 给出一张图,m代表人,H代表house,问所以的人走到house里的最小花费(每步花费1)5 5HH..m...............mm..H简单题目直接代码 :#include#include#include#include#includeusing namespace std;const int M=102;const int MAXN=10原创 2012-07-24 11:29:10 · 615 阅读 · 0 评论 -
hdu 3572 网络流 最大流
题意:有n个任务和m台机器,每个任务i必须在si天之后才能开始 (包括),在ei之前完成(包括),任务需要pi天完成。一直每台机器一次只能做一个任务。一个任务一天内只能在一个机器上做,但是不同的天可以用不同的机器,求是否能按时完成任务。思路:这是一道最大流问题。关键时间图,我们可以建立一个超级源点与每个任务相连并且容量是pi,每个任务再与所对应的天建边,流量是1,然后每一天在与超级汇点建边转载 2012-07-24 13:42:05 · 522 阅读 · 0 评论 -
hdu 3605_最大流 状态压缩
题目大意不再赘述,很容易看出来是最大流,只不过人比较多,有100W个,所以需要进行压缩,可以看到m是比较小的,非常容易就能联想到2进制,所以就压缩成了1024个节点,每个结点有一个值,代表有多少人是这个状态,然后建立超级源点, 超级汇点,源点与1024个结点连线,边权为结点的值,然后每个源点再与m个星球进行连线,边权为无限大,然后每个星球再与汇点进行连线,值为该星球的容纳量。转载 2012-07-24 19:29:42 · 833 阅读 · 0 评论 -
hdu 2883 最大流
#include#include#include#include#includeusing namespace std;const int M=202;const int MAXN=500000;const int INF=0x3f3ff3f;int t,n,m,tot;int gap[MAXN],dis[MAXN],pre[MAXN],head[MAXN],cur[MAXN]原创 2012-07-24 17:20:30 · 695 阅读 · 0 评论 -
hdu 4322 最大费用最大流
/*Candy【题目大意】有N颗糖果和M个小孩,老师现在要把这N颗糖分给这M个小孩。每个小孩i对每颗糖j都有一个偏爱度Aij,如果他喜欢这颗糖,Aij = k,否则Aij = 1。小孩i觉得高兴当且仅当ΣCij×Aij >= Bi,j=1,2,…,N,若他分得了糖j,Cij = 1,否则Cij = 0。问能否合理分配这N颗糖,使得每个小孩都觉得高兴。【建模方法】(最大费用最大流) 本题原创 2012-08-12 01:24:42 · 872 阅读 · 0 评论 -
poj 3281 最大流 拆点构图,关键在于构图
/*最大流,模版题目,要拆点题目大意:给出N个牛喜欢的食物和饮料列表,每种食物和饮料只能用一种,求能满足多少只牛?思路:把牛拆成两个点,连边e(i,n+i)=1 食物和i连i边e(food,i)=1,n+i和饮料连边e(n+i,drink)=1 食物和s连边e(s,i)=1, 饮料和t连边(i,)=1*/#include原创 2012-07-28 09:38:21 · 986 阅读 · 0 评论 -
hdu 3917 最大流 最小割
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3917题意: 给出n,个工程,m个公司,给出每个公司施工需要上交的税务 tax,给出k 个 工程之间的关系,以及政府补助c,项目可处理对象 d!并且要求如果 选取i 公司担任这个工程,那么i 公司负责的项目也相应必须有它负责!!同时,与其” 相连 “的公司j 也必须担任” 相原创 2012-08-14 19:30:47 · 1665 阅读 · 0 评论 -
poj 2485 3921 最大流 拆点构图
题目:http://poj.org/problem?id=3921 题意: 大意是给你一个图,每条边权值为1,你在其中毁坏多少个点可以使得从1到n至少要花费k+1的时间显然意思就是要求对于一条边(u,v)dist[1][u]+dist[v][n]+1u的最短路径都大于k则说明这条路径上的点u、v可以暂时不予考虑!我们只考虑 dist[1][u]+dist[v][n]+原创 2012-08-15 10:33:17 · 845 阅读 · 0 评论 -
hdu 3061 最大流最小割
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3061 中文题最小割,增加源和汇,把源与权为正的点连上界为该点权值的边,权为负的点与汇连上上界为该点权值相反数的边,然后如果攻占a必须先占b,则连上权值无穷的边a->b,所有正值之和减去最大流,即答案。。。代码:#include#include#include#include#原创 2012-08-06 12:04:18 · 583 阅读 · 0 评论 -
hdu 4280 网络流 sap 点边数据很大
转自 匆匆过客:http://blog.sina.com.cn/s/blog_691ce2b701019vu3.html题意:有N个岛屿 M条无向路 每个路有一最大允许的客流量,求从最西的那个岛屿最多能运用多少乘客到最东的那个岛屿。思路:很单纯的网络流,重点是卡时间 模板的高效性很重要啊该模板详解 参见这里 模板题就不注释了#include #include #define转载 2012-09-11 18:57:01 · 830 阅读 · 2 评论 -
hdu 4067 最小费用最大流
/*题意:给出一个有n个点m条边的有向图,现在要从图中删去一些边使得图满足以下条件:1.图中只有一个入口(s)和一个出口(t)2.所以边都是单向的(这个原图已经保证了)3.对入口(s)而言,其出度=入度+14.对出口(t)而言,其入度=出度+15.对入口(s)、出口(t)以外的点,其入度=出度而对图中每条边,保留这条边或者删去这条边都有相应的花费,分别为a、b,求使得该原创 2012-09-15 12:18:07 · 1194 阅读 · 0 评论 -
hdu 4289 最小割 最大流
题意:有N个城市 M条无向边 有一恐怖分子要从某一城市到另一城市 打算在某些城市安放一些SA 去抓住他 但若在某个城市安放SA需要一定费用 求要抓到恐怖分子 最少的费用是多少?思路:网络流问题。建一超级源点和汇点与原源点、汇点相连,然后把一个城市拆成两个点 边权为其费用 两相连城市间的边权为无穷大 求其最大流即可。#include#include#include原创 2012-09-17 10:07:56 · 574 阅读 · 0 评论 -
hdu 4292 拆点 最大流
具体思路见这里:http://blog.youkuaiyun.com/azheng51714/article/details/7795968#include #include #include #include #include using namespace std;#define M 10100int gap[M],dis[M],pre[M],cur[M];int NE,NV;原创 2012-09-17 10:05:51 · 854 阅读 · 0 评论 -
hdu 4411 网络赛题目 费用流
/*题意:有n(0有k(0i - 1 点,到达一个点的时候可以选择不占领,问最后思路,分析: 最小费用最大流,需要注意的地方在于怎么去保证每个每个城市的团伙仅仅被抓一次,且在抓他之前,第i-1城市的团伙已经被抓。 方法是把拆点后的城市 i 和 i`之间的费用要设成一个很小的负值,这样可以保证该城市一定可以被访问到, 还有一点要原创 2013-01-31 14:59:35 · 725 阅读 · 0 评论