随笔分类 -  图论——网络流

摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3879好纠结的一道题啊 ,竟然 卡网络流的算法 。。。。。。用 dinic tle 。。。。改为 isap 过了。。。。。。。 题意:有n<= 5000个点可以用来建Station,题目给出了m个xi yi ci表示建立xi和yi个站点公司将获利ci,修建每个站点还需要成本, 让你求如何修建站点能使公司的收益最大?题解: 找出依赖关系 要获得利益 ci 则 要 有建立 站 a 和 站 b 所以 添加一个 点 c 权值 为正 ,要修的 站 权值 为 负 连接 c->a .c->b ; 然后 求 阅读全文
posted @ 2012-11-10 17:03 Szz 阅读(409) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3996题意 :题意:有n个金矿,每个金矿开发需要一定的价值,开发之后可以获得一定的价值,而且一些金矿受到另一些金矿的限制,即开采这个金矿之前要开采限制它的金矿,问最多可以获得多少价值。 题解: 很明显的 最大权闭合图 金矿 ,有 开采的 花费 和价值 ,那么 开采的 利益就 是 价值 - 花费 ; 如果某个金矿的开发利润为正值,就在源点和该点之间连一条容量为该利润的边如果某个金矿的开发利润为负值,就在该点和汇点之间连一条容量为该利润绝对值的边如果某个金矿收到另一个金矿的限制,就在两个金矿之间连一条容量... 阅读全文
posted @ 2012-11-10 13:06 Szz 阅读(347) 评论(0) 推荐(0)
摘要:详见 国家集训队 论文 2007 胡伯涛 《最小割模型在信息学竞赛中的应用》首先说几个我看时疑惑的问题 1:为什么 割里面的点集就是闭合 图 ?答:由于 我们见图时,将原图的 边的容量 变为 了 inf,而 割 是 不回 包含这些边的 ,他只能是 个 s或 t相连的 所以 ,我们 割里面的边 ,要么 是有 s 点出发 到的 本节点 ,要么 是 本节点 到达 t 节 的 边,而 s 和 t 是我们 虚拟的点 ,不会有其他的边所以 ,是一个 闭合图 。2: 如何 将 最大权 闭合图 中的 点 输出 ? 首先我们 知道 ,我们选的最小割的 割边 是 满边 ,所以 根据 残留网络的 容量 见图 分成了 阅读全文
posted @ 2012-11-03 11:45 Szz 阅读(305) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=2987题意:公司要由于经济 问题 要 裁员工,已知,要采取某个 员工,那么 他的下属也将被 裁去,给出 裁出 n 个员公的 所获的利益 (可负 可正) ,员工之间的关系 i j,i 以 j 做为 他的下属 求在获得 最大利益的情况下 ,最少 裁 多少人 。输出 裁的人数 和 利益 。 题接: 因为 员工 i 以 其上司的 存在 而 存在, 所以 他们 之间 有 依赖关系 , 可应用 最大权闭合图,求解 。View Code 1#include<cstdio>2#include<cstring>3#include< 阅读全文
posted @ 2012-11-03 11:38 Szz 阅读(233) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3667题意:用 0 到 n-1 运送k 个货物,m条边,每条边,u,v,a,c,; 每条边表示 运送 x 单元货物的花费为 a * x*x,c 表示最大流量 ,求 最小费用 ,若不能全部运送输出 -1;题解: 拆边 ,看到这个题直接的思路就是费用流,一开始提了个模版 上去 发现不对,我们以前做的 花费是 a*f ,而现在是 a*f*f(此时 以 最短路 已不能找到正确的答案);所以我们要变为 a*f ,那么就是,我们 发现 第一次运送时费用为a,第二次取这条路时费用为3a(即流量为2时费用值为a+3a=4a) 阅读全文
posted @ 2012-10-14 20:59 Szz 阅读(303) 评论(0) 推荐(0)
摘要:hdu 4289 control http://acm.hdu.edu.cn/showproblem.php?pid=4289我自己的代码:1#include<cstdio>2#include<cstring>3#include<cmath>4#include<iostream>5#include<algorithm>6#include<set>7#include<map>8#include<queue>9#include<vector>10#include<string>1 阅读全文
posted @ 2012-09-22 09:42 Szz 阅读(554) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4289题意: 有n个城市,有个小偷想从其中一个城市逃到另一个城市,警察想要堵截这个小偷,知道了在每个城市堵截的成本,问如何安排在哪些城市堵截可以使得 小偷一定会被抓住,而且成本最低。题解 : 最大流 ; 将每一个点 查分成两个 ,x 和x+n 他们之间的流量为 在 x 点的花费 ,对于 右边相连的x,y l连接 x +n 到 y 和 y +n到 x 流量值 为 inf ,(这样保证了 流量 只受拆点边的限制) 最后 求 s 到 e+n 的 最值 即可 dinic 算法:1#include<cstdio& 阅读全文
posted @ 2012-09-21 22:11 Szz 阅读(469) 评论(1) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4292题意:给出n个人喜欢的饮料种类以及食物种类,每个人只能取其中一种且数量为1,现在给出有f中食物以及d种饮料,以及他们各自的数量,问如何安、排食物以及饮料,使得最多的人得到一个食物以及一瓶饮料题解 :最大流 + 拆点 ;为了 保证 每一个人只有 一个 食物和 饮料 ,我们 要将 一个人 拆分成 2 个 ,他们之间 连线 流量 为 1 ;1#include<cstdio>2#include<cstring>3#include<cmath>4#include<iost 阅读全文
posted @ 2012-09-20 20:42 Szz 阅读(598) 评论(0) 推荐(0)
摘要:网络流入门—用于最大流的Dinic算法 转自:http://comzyh.tk/blog/archives/568/ “网络流博大精深”—sideman语 一个基本的网络流问题 感谢WHD的大力支持 最早知道网络流的内容便是最大流问题,最大流问题很好理解: 解释一定要通俗! 如右图所示,有一个管道系统,节点{1,2,3,4},有向管道{A,B,C,D,E},即有向图一张. [1]是源点,有无限的水量,[4]是汇点,管道容量如图所示.试问[4]点最大可接收的水的流量? 这便是简单的最大流问题,显然[4]点的最大流量为50 死理性派请注意:流量是单位时间内的,总可以了吧! 然而对于复杂... 阅读全文
posted @ 2012-09-13 18:26 Szz 阅读(6008) 评论(0) 推荐(3)
摘要:1 http://poj.org/problem?id=3422 /* 2 题意: 3 :给一个N*N的方阵,从[1,1]到[n,n]走K次,走过每个方格加上上面的数, 4 然后这个格上面的数变为0。求可取得的最大的值。 5 6 有是一道网络流题,关键是怎么建图啊。。。。 7 思路:最小费用最大流。建图很重要,这里用到拆点,将每个点拆成两个, 8 这两点之间连两条边,一条容量为1,费用为该节点的值,另一条边容量为无穷或k,费用为0,这样保证就算经过这点k次时,费用也只被计算一次。 9 由于每个点只能往右或者往下走,所以将它和右边及下边的点连一条边,容量为无... 阅读全文
posted @ 2012-05-07 18:07 Szz 阅读(358) 评论(0) 推荐(0)
摘要:1 /* 2 将 maxn 定位 200 不是超时 就是wa 定位300 32ms 过 纠结。。。。。。。 3 4 题意:一个row*col的矩阵,m表示人,H表示房子,.表示空地,人数和房子数相等,如下图: 5 5 5 6 HH..m 7 ..... 8 ..... 9 ..... 10 mm..H 11 现在要让所有的人都进入不同的房子内,问总共最少走多少步? 12 将 人看作是 源点 房子 看作是 汇点 13 14 思路:最小费用最大流。 15 16 */ 1... 阅读全文
posted @ 2012-05-05 11:10 Szz 阅读(222) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1149/*一开始没很懂题意 ,将 猪圈 和人 一起建了一个图 写了一个最大六模版,可是结果始终和样例不一样,有读了一遍题 ,题中说 猪圈打开后可以重新调整猪的分配。这才明白。1. 对于每个猪圈的第一个顾客,从源点向他连一条边,容量为猪圈里的猪的数量。2. 对于每个猪圈,如果不是第一个顾客,则上一个打开这个猪圈的顾客向这个顾客连一条边,容量为 +∞。(便于调整猪的重新分配)3. 每个顾客到汇点连一条边,容量为各个顾客能买的数量。*/#include<stdio.h>#include<string.h>#define i 阅读全文
posted @ 2012-05-04 20:58 Szz 阅读(214) 评论(0) 推荐(0)
摘要:一、最小费用最大流的模型在保证流量最大的前提下,所需的费用最小,这就是最小费用最大流问题.带有费用的网络流图: G=(V,E,C,W)V:顶点; E:弧;C:弧的容量;W:单位流量费用。任意的弧<i,j>对应非负的容量c[i,j]和单位流量费用w[i,j]。满足:① 流量f是G的最大流。② 在f是G的最大流的前提下,流的费用最小。F是G的最大流的集合(最大流不止一个):在最大流中寻找一个费用最小的流 f.二、最小费用最大流的算法基本思路:把弧<i,j>的单位费用w[i,j]看作弧<i,j>的路径长度,每次找从源点s到汇点t长度最短(费用最小)的可增广路径进行 阅读全文
posted @ 2012-05-03 21:45 Szz 阅读(1875) 评论(0) 推荐(0)
摘要:题意:有N个客户,M个仓库,和K种货物。已知每个客户需要每种货物的数量,每个仓库存储每种货物的数量,每个仓库运输各种货物去各个客户的单位费用。判断所有的仓库能否满足所有客户的需求,如果可以,求出最少的运输总费用。 思路:最小费用最大流。先判断是否每种货物的存储总量都足够,足够的话,对每一种货物进行一次最小费用最大流求出完成这种货物运输的最小总费用,所有的总费用相加就是结果了。思路:最小费用最大流。先判断是否每种货物的存储总量都足够, 足够的话,对每一种货物进行一次最小费用最大 流求出完成这种货物运输的最小总费用,所有的总费用相加就是结果了。http://poj.org/problem?... 阅读全文
posted @ 2012-05-03 21:26 Szz 阅读(318) 评论(0) 推荐(0)
摘要:网络流EK算法数据结构:队列主要操作:广搜 记录路径 更新能解决的问题:最大流(最小割)复杂度:O(MV)v指最大容量,M指边数。新名词: 1.增广路:从源点source到tink的一条简单路,如果路上的每条边(u,v)的可改进量均大于0,则称这条路为一条增广路。 增广路定理:网络达到最大流量当且仅当不存在增广路。 增广路算法:从一个可行流开始不断的寻找可增广路,然后沿着它增广,直到它不存在。 2.反向弧:如果有一条弧(u,v),那么再进行网络流算法时,要对它建立反向弧(v,u),反向弧的容量为0,与正向弧相反,正向弧减少容量时,反向弧增加容量。建立反向弧能更多的增广,... 阅读全文
posted @ 2012-05-01 11:20 Szz 阅读(1066) 评论(0) 推荐(0)
摘要:1直接套用最大流的模板的,主要是建图的过程。输入分别为m个点,a个发电站,b个用户,n条边;接下去是n条边的信息(u,v)cost,cost表示边(u,v)的最大流量;a个发电站的信息(u)cost,cost表示发电站u能提供的最大流量;b个用户的信息(v)cost,cost表示每个用户v能接受的最大流量。 典型的最大网络流中多源多汇的问题,在图中添加1个源点S和汇点T,将S和每个发电站相连,边的权值是发电站能提供的最大流量;将每个用户和T相连,边的权值是每个用户能接受的最大流量。从而转化成了一般的最大网络流问题,然后求解。map[i][j]记录的就是i->j可以增加的流量 2 第一次b 阅读全文
posted @ 2012-05-01 11:17 Szz 阅读(241) 评论(0) 推荐(0)
摘要:网络流维基百科,自由的百科全书在图论中,网络流 (Network Flow)是指在一个每条边都有容量 (Capacity)的有向图分配流,使一条边的流量不会超过它的容量。(边有附带容量的图称为网络。)一道流必须符合一个结点的进出的流量相同的限制,除非这是一个源点 (Source)──有较多向外的流,或是一个汇点 (Sink)──有较多向内的流。一个网络可以用来模拟道路系统的交通量、管中的液体、电路中的电流或类似一些东西在一个结点 (Node) 的网络中游动的任何事物。目录[隐藏]1定义2例子3算法4应用5普遍化及专门化6参考7外部连接[编辑]定义假设是一个有限的有向图,它的每条边都有一个非负值 阅读全文
posted @ 2012-04-30 19:55 Szz 阅读(980) 评论(0) 推荐(0)