网络流
凌阡陌
随心而为,我自逍遥
展开
-
最大流模板
const int oo=1e9;const int mm=111111;const int mn=999;int node,src,dest,edge;int ver[mm],flow[mm],next[mm];int head[mn],work[mn],dis[mn],q[mn];void prepare(int _node,int _src,int _dest)//初始化{原创 2012-08-15 15:13:30 · 266 阅读 · 0 评论 -
hdu1565二分图点权最大独立集
分析:同上一道题是一样的,就是一个方格取数的模型。#include #include using namespace std;const int oo=1e9;const int mm=111111;const int mn=999;struct Node{ int i,j,id,c;}nod[mm*mn];int node,src,dest,edge;int v原创 2012-10-01 16:46:55 · 309 阅读 · 0 评论 -
nefu485分配问题(二分图的最佳匹配)
分配问题Time Limit 1000msMemory Limit 65536Kdescription 有n件工作要分配给n个人做。第i 个人做第j 件工作产生的效益为ij c 。试设计一个将n件工作分配给n个人做的分配方案,使产生的总效益最大。 对于给定的n件工作和n原创 2012-10-05 14:15:13 · 441 阅读 · 0 评论 -
hdu1853最小费用最大流
题意:一张有向图,找出图中所有的回路,求所有回路权值总和。要求,所有的点只能属于一个回路,每个回路中至少包含两个点,如果不存在输出-1.分析:所有点最多只属于一个回路,即所有的点入度和出度都不会大于1,利用最小费用最大流。不知道这个题是怎么回事,一开始是mn=888,mm=11111,居然过不去。。。。#include #include using namespace std;c原创 2012-10-05 20:44:59 · 386 阅读 · 0 评论 -
hdu2813one fight one
明显的二分图的最佳匹配,直接用map+最小费用最大流,但是很悲惨的超时了,后来换成字典树+最小费用最大流,还是超时,哪位能帮我看一下哪有问题吗?在网上搜了一下,这个题大家都是用KM算法做的,难道最小费用最大流不可以???#include #include #include using namespace std;const int oo=1e7;const int mm=1111原创 2012-10-06 21:24:10 · 327 阅读 · 0 评论 -
hdu2426Interesting Housing Problem
http://acm.hdu.edu.cn/showproblem.php?pid=2426#include #include using namespace std;const int oo=1e7;const int mm=111111;const int mn=8888;int node,src,dest,edge,ans;int ver[mm],flow[mm],cost原创 2012-10-06 22:04:09 · 320 阅读 · 0 评论 -
hdu3718Similarity
题意:匹配两个串,求最大匹配数。匹配的两个串形似即可。#include #include #include using namespace std;const int oo=1e7;const int mm=111111;const int mn=8888;int node,src,dest,edge;int ver[mm],flow[mm],cost[mm],next[mm]原创 2012-10-08 11:06:02 · 293 阅读 · 0 评论 -
hdu1151有向无环图的最小路径覆盖
题目大意:在一个城镇,有m个路口,和n条路,这些路都是单向的,而且路不会形成环,现在要弄一些伞兵去巡查这个城镇,伞兵只能沿着路的方向走,问最少需要多少伞兵才能把所有的路口搜一遍。分析:就是求几条路径能覆盖到图中所有的点,即最小路径覆盖问题。有向无环图的最小路径覆盖数=m-匹配数。#include #include using namespace std;const int o原创 2012-09-25 21:09:59 · 478 阅读 · 0 评论 -
nefu486魔术球问题(增加节点最大流模板)
魔术球问题Time Limit 1000msMemory Limit 65536Kdescription假设有n根柱子,现要按下述规则在这n根柱子中依次放入编号为1,2,3,...的球。(1)每次只能在某根柱子的最上面放球。(2)在同一根柱子中,任何2个相邻球的编号之和为完全平方原创 2012-10-09 11:38:58 · 553 阅读 · 0 评论 -
nefu484数字梯形问题
数字梯形问题Time Limit 1000msMemory Limit 65536Kdescription 给定一个由n 行数字组成的数字梯形如下图所示。梯形的第一行有m 个数字。从梯形的顶部的m 个数字开始,在每个数字处可以沿左下或右下方向移动,形成一条从梯形的顶至底的路径。原创 2012-10-08 21:20:11 · 674 阅读 · 0 评论 -
hdu4289最小割
题意:一个小偷要从s市逃到d市,警察可以在任意一个城市逮捕他们,但是需要花费不同的钱,问在保证一定能够抓到小偷的情况下的最小花费是多少。分析:每个城市都有一个花费,故进行拆点,在a,a+n之间连一套容量为cost[i]的线段。另外,两个相连通的城市,在(a+n,b),(b+n,a)之间连一条容量为无穷的边,最后求从s到d+n的最大流即可。#include #include using原创 2012-09-18 20:35:12 · 576 阅读 · 0 评论 -
nefu493负载平衡问题
负载平衡问题G 公司有n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使n 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。 对于给定的n 个环形排列的仓库的库存量,编程计算使n 个仓库的库存数量相同的最少搬运量。【问题分析】转化为供求平衡问题,用最小费用最大流解决。【建模方法】首先求出所有仓库存货量平均值,设第i个仓库原创 2012-10-10 16:03:13 · 818 阅读 · 1 评论 -
nefu488餐厅计划问题(最小费用最大流)
餐厅计划问题一个餐厅在相继的N 天里,每天需用的餐巾数不尽相同。假设第i天需要ri块餐巾(i=1,2,…,N)。餐厅可以购买新的餐巾,每块餐巾的费用为p分;或者把旧餐巾送到快洗部,洗一块需m天,其费用为f 分;或者送到慢洗部,洗一块需n 天(n > m),其费用为s < f 分。每天结束时,餐厅必须决定将多少块脏的餐巾送到快洗部,多少块餐巾送到慢洗部,以及多少块保存起来延期送洗。但是每天洗原创 2012-10-10 11:13:32 · 824 阅读 · 0 评论 -
nefu492运输问题
W公司有m个仓库和n 个零售商店。第i 个仓库有ai 个单位的货物;第j 个零售商店需要bj个单位的货物。货物供需平衡,即。从第i 个仓库运送每单位货物到第j 个零售商店的费用为Cij 。试设计一个将仓库中所有货物运送到零售商店的运输方案,使总运输费用最少。 对于给定的m 个仓库和n 个零售商店间运送货物的费用,计算最优运输方案和最差运输方案。与分配问题是一样的,都是最小费用最大流和最大费原创 2012-10-10 15:06:56 · 680 阅读 · 0 评论 -
nefu487最长递增子序列问题
最长递增子序列问题Time Limit 1000msMemory Limit 65536Kdescription给定正整数序列x1 , ... , xn 。(1)计算其最长递增子序列的长度s。(2)计算从给定的序列中最多可取出多少个长度为s的递增子序列。(3)如果允许在取出的序原创 2012-10-09 21:17:43 · 508 阅读 · 0 评论 -
nefu482二分图点权最大独立集
方格取数问题Time Limit 1000msMemory Limit 65536Kdescription 在一个有m*n 个方格的棋盘中,每个方格中有一个正整数。现要从方格中取数,使任意2 个数所在方格没有公共边,且取出的数的总和最大。试设计一个满足要求的取数算法。对于给定原创 2012-10-01 16:37:21 · 332 阅读 · 0 评论 -
hdu4160最小路径覆盖
题意:俄罗斯套娃,长宽高小的可以套在长宽高大的里面。典型的最小路径覆盖,问有多少条路径能覆盖到所有的点。纠结的是~~~杭电怎么改版了之后,数组开小了之间就WA了吗?找了好长时间错误,结果发现是数组开小了。。。#include #include using namespace std;const int oo=1e9;const int mm=111111;const int原创 2012-10-01 16:11:13 · 324 阅读 · 0 评论 -
hdu4280isap
#include#include#includeusing namespace std;const int oo=2e9;const int mm=222222;const int mn=111111;int node,src,dest,edge;int ver[mm],flow[mm],next[mm];int head[mn],work[mn],h[mn],q[mn],gap转载 2012-09-13 09:42:33 · 296 阅读 · 0 评论 -
nefu473最大流模板简单应用
#include #include using namespace std;const int oo=1e9;const int mm=111111;const int mn=999;int node,src,dest,edge;int ver[mm],flow[mm],next[mm];int head[mn],work[mn],dis[mn],q[mn];void prepa原创 2012-08-15 15:14:58 · 302 阅读 · 0 评论 -
有向无环图的最小路径覆盖nefu481
有向无环图的路径覆盖问题就是在图中找一些不相交的简单路径,使之覆盖图中的所有顶点,且任何一个顶点有且只有一条路径与之关联(如果沿这些路径中的每条路径从起点到终点,那么恰好可以经过图中每个顶点一次且仅一次)。从上述定义中可以看到:(1)每个单独的顶点都可以是一条路径。(2)如果存在路径(p1,p2,,,,pk),那么在覆盖图中,顶点p1,p2,,,,pk,不再与其他的顶点之间存在有向边。原创 2012-08-15 16:01:00 · 539 阅读 · 0 评论 -
nefu499最小费用最大流
#include#include#includeusing namespace std;const int oo=1e9;const int mm=88888;const int mn=444;int node,src,dest,edge;int ver[mm],cost[mm],flow[mm],next[mm];int head[mn],dis[mn],q[mn],p[mn]原创 2012-08-27 19:03:16 · 289 阅读 · 0 评论 -
poj2060最小路径覆盖
俄罗斯套娃,如果i能装到j里面,则从i到j建一条有向边,问最后能看到几个娃娃,即需要多少条路径能够覆盖到所有节点。#include using namespace std;const int oo=1e9;const int mm=111111;const int mn=999;int node,src,dest,edge;int ver[mm],flow[mm],next[mm]原创 2012-09-26 16:53:21 · 287 阅读 · 0 评论 -
poj3216Floyd+最小路径覆盖
题意:整个城市分为Q个区,一个Repairing Company有M个任务,每个任务有三个值,pi-在哪个区,ti-用户要求开始的时间,di-完成任务需要花费的时间。分析:一个典型的最小路径覆盖,问需要多少个staff来完成这些任务,就是要有多少条路径来覆盖到图中所有的点。#include using namespace std;const int mm=555555;const int原创 2012-09-26 20:30:20 · 327 阅读 · 0 评论 -
poj1548最小路径覆盖
题意:用机器人去清扫垃圾,机器人只能向下、右走,到右下角结束,问最少需要多少个机器人能够覆盖到图中所有垃圾。分析:典型的最短路径覆盖,最少需要多少条路径覆盖到所有的点。#include #include using namespace std;const int oo=1e9;const int mm=1e6;const int mn=6666;int node,src,des原创 2012-09-26 21:03:47 · 331 阅读 · 0 评论 -
poj2594点可重复的最小路径覆盖
点可重复的路径覆盖问题用匈牙利算法+floyd闭包来求解。#include #include #include #include #include #include #include #include #include #define MAX 550using namespace std;bool map[MAX][MAX],used[MAX];int mat[MAX]原创 2012-09-27 20:50:03 · 361 阅读 · 0 评论 -
zoj3646二分匹配
这是我zoj的第一道题,比赛的时候怎么也想到是二分匹配。想到将它转化为图,将U看做是1,D 看做是0,将整张图看做是一个邻接矩阵,求每个点是否有自环或者是回路。但是,这都没想到是二分匹配。。。。惭愧啊。。。。#include #include using namespace std;const int oo=1e8;const int mm=111111;const int mn=9原创 2012-10-01 15:32:27 · 328 阅读 · 0 评论 -
zoj3165二分图点权最大独立集+dinic匹配时的匹配数
题意:要想将一些学生分组,其中有一些学生不能跟另外一些学生在一起,问应该如何分组,在满足要求的前提下,使得人数最多。分析:就是一个方格取数的模型。二分图点权最大独立集。。。特点是要求出二分图两边匹配的数目。#include #include using namespace std;const int oo=1e9;const int mm=111111;const int原创 2012-10-02 14:51:24 · 377 阅读 · 0 评论 -
poj2771二分图点权最大独立集,用Dinic解决
题意:有一个保守的老师,带领学生出去玩,但是他要保证学生不能成为夫妻,求在保证这个前提的情况下,他最多能带多少人。分析:典型的二分图点权最大独立集的问题,以男女为界,分为两组,实现二分图。注:因为src是0,所以不能再从0开始了,因为这个找了好长时间的错~~~~#include #include #include #include using namespace std;co原创 2012-10-02 16:34:53 · 487 阅读 · 0 评论 -
poj2987
#include #include using namespace std;const int oo=1e9;const int mm=1111111;const int mn=9999;int node,src,dest,edge;int ver[mm],flow[mm],next[mm];int head[mn],work[mn],dis[mn],q[mn],vis[mn];原创 2012-10-01 20:24:17 · 406 阅读 · 0 评论 -
poj1466最大独立集
跟上一道题差不多,都是在满足题目条件的情况下,使得人数最大。但是不同点在于没有性别之分,也就是说他可以两边的人都带,所以在求完最大匹配数之和再除以2.#include #include using namespace std;const int oo=1e9;const int mm=1111111;const int mn=1111;int node,src,dest,edge;原创 2012-10-02 19:28:42 · 349 阅读 · 0 评论 -
hdu1569方格取数(2)
跟hdu1565是一样的,但是杭电现在真的判不出来数组越界了,这已经是第二次了!!!#include #include using namespace std;const int oo=1e9;const int mm=1111111;const int mn=9999;struct Node{ int i,j,id,c;}nod[mn];int node,sr原创 2012-10-02 19:38:49 · 446 阅读 · 0 评论 -
nefu483星际转移问题(分层图网络流)
星际转移问题Time Limit 1000msMemory Limit 65536Kdescription 由于人类对自然资源的消耗,人们意识到大约在2300 年之后,地球就不能再居住了。于是在月球上建立了新的绿地,以便在需要时移民。令人意想不到的是,2177 年冬由于未知的原原创 2012-10-02 19:59:14 · 833 阅读 · 0 评论 -
nefu494深海机器人问题
深海机器人问题Time Limit 1000msMemory Limit 65536Kdescription 深海资源考察探险队的潜艇将到达深海的海底进行科学考察。潜艇内有多个深海机器人。潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动。深海机器人在移动中还必须沿途采集海原创 2012-10-10 20:57:00 · 621 阅读 · 0 评论