网络流&费用流专辑

poj1273 Drainage Ditches

网络流第一大水,入门基础题。


poj1459 Power Network

有一个电力网络,有发电厂,有用户,图提供的信息有发电厂和用户的容量,还有边,以及边的容量和流量,求解用户的最大使用量.描述比较麻烦,入门基础题source连入所有的producer,所有的consumer连入sink,流量为最大生产量/消费量。求最大流。


poj2112 Optimal Milking

题意:安排C头奶牛到K个挤奶器,每个挤奶器最多能为M头牛挤奶,给出奶牛、挤奶器之间的额边的权值,求所有安排方案中,C头奶牛需要走的最大距离的最小值

求解:先求好原图中两两间的最短路径,再二分答案,增加一个汇点,每个挤奶器向汇点连上一条容量为M的边,增加一个源点,向每只牛连一条容量为1的边,然后求一个s--t的最大流即可。


poj 2455 Secret Milking Machine 

题意:FJ有N块地,这些地之间有P条双向路,每条路的都有固定的长度l。现在要你找出从第1块地到第n块地的T条不同路径,每条路径上的路不能与先前的路径重复,问这些路径中的最长路的最小是多少。

思路:二分答案+网络流判定。二分最小值,然后求出其最大流,则最大流表示能找出多少条符合的路径,如果这个路径大于等于T,则表示这个最小值符合条件。


poj 2391 Ombrophobic Bovines

题意:给出一些牛棚,开始牛棚边有一些牛,牛棚之间有路相连,走一条路会花费固定的时间,下雨时牛得躲进牛棚,每个牛棚容量有限,所以路容量无限。
求:在所有牛都能进牛棚时最少需要多少时间。

构图:floyd处理任意两点间距离,每个牛棚拆为两个点i和i+n,如果ij间有通路则i和j+n间连一条容量为inf的边。源点向所有i连一条容量为牛棚i已有牛数的边,所有i+n向汇点连容量为牛棚i容量的边。二分答案最大边,验证条件为最大流是否为所有牛的数量。


SGU 326 Perspective

题意:有N个球队在同一个赛区,已知他们胜利的场数,还剩下的在赛区内的比赛数和跨赛区的比赛数的和,和在赛区内的比赛对阵矩阵。问,1号球队是否可以不小于其余球队胜利场数的最大值。

思路:假设1号球队赢得所有比赛,其余球队输掉所有跨赛区的比赛。如果此时有球队比1号球队胜利场次多,显然直接输出NO。
否则,对于在同一赛区的比赛,新增源点S,汇点T。
对于每个点i,从S向i连一条容量为和1号球队胜利场数之差的弧。
对于赛区内的每一个进行K次的对阵(I,J),新增一个点P,从I向P连一条容量为K的弧,从J向P连一条容量为K的弧,从P向T连一条容量为K的弧。
求s到t的最大流,若所有P指向T的弧都满流,则输出YES,否则输出NO。
(证明:假设某条P指向T的弧不满流,则S指向I和S指向J的弧已经满流,但是还比赛还没有打完,不管剩下的比赛谁赢都将比1号球队的胜利场次多。)




————————————————————————————————————————————

POJ2516 Minimum Cost

题意:M个歌仓库向N个店主提供K中产品,给出每个客户对每周产品的需求,每个仓库每种产品的储量,及每个产品从第i个仓库运到第j个店主所花费的费用,问如何分配供应量使耗费最小。
构图:每种产品互不相干,因此分开考虑,构k次图,求k次最小费用流; s到个仓库(s,i,库存,0),割店主到t(m+i,t,需求,0),仓库和店主间(i,m+j,库存,matrix[i][j])。
对于每个产品,计算总库存和总需求,若库存小于供应,则不计算最小费用,返回-1;

poj 3680 Intervals
题意 :有 n 个开区间,每个开区间都有一个正权;选出一些开区间,使得没有一个点被覆盖了 k 次以上,同时,使得开区间的权值和最大。
构图:首先开区间的起点和终点全都离散化(不难考虑,不影响结果)。
设所有的点为 0,1,2…N-1 ,那么:
1.source->0 ,流量为 k ,费用为 0
2.N-1 可以作为 sink 出现。
3. 对于每个经过离散化的开区间 (a,b) ,连 a->b ,容量为 1 ,费用为开区间的费用
然后求最大费用最大流就 ok 了;

poj 2135 Farm Tour
题意:有n个顶点和若干条无向边,边权值表示耗时多少,要从顶点1走到n,再回到1,不能走重复路,求最短耗时;
构图:对于每条路,添加一条流量为1,费用为耗时的边(双向),增加源点和汇点,源点和1间增加流量为2费用为0的边,n和汇点增加流量为2费用为0的边,求最小费用流即可

poj 3422 Kaka's Matrix Travels
n*n的矩阵内每个格子内有一定价值的东西,kaka每次从左上角出发到右下角,只能向右或者向下移动,格子里的东西只能拿走一次,问走k次后最多能拿多大价值的东西。
构图:构图关键在于每个格子第一次走和其它次情况不同,因此拆点后有两条边,一条流量为1,费用为-价值,另一条流量为k-1费用为0,如果a能够一步到b,则a+n*n与b之间连流量为k费用为0的边。这样保证每个点最多经过k次且只有第一次获得了价值。最小费用流求负即是最大能够获得的价值。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值