4
12
2013
0

【整理中】最大流

黑色已过
网络流:
基础
poj1149: 给你一堆猪圈,以及一些买猪的人,每个买猪的人操作时可以打开一些猪圈,他最多买走一定数量的猪。最后,在他操作结束后,可以任意移动已经打开的猪圈里面的猪,关上猪圈,继续下一个人。问最多能卖多少猪。
sol:
考虑每次交易和所有猪圈构成网格,去除多余的节点,得到:
S->第一个在这个猪圈买猪的人,容量是这个猪圈猪的数量。合并冗余的边。
如果一个猪圈一共有n次交易,则第i个顾客往i+1连一条边。
顾客往T连一条容量为购买限制的边。
hdu1569: m是列n是行……
带上下界的网络流
  1. 无源无汇带上下界网络流:
    • 求出一组解,使得对于任意一条边满足C(u,v)∈[L,R],ΣC(u,v) - ΣC(v,p) = 0 
    • sgu194给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流躺物质。并且满足每根pipe一定的流量限制,范围为[Li,Ri].即要满足每时刻流进来的不能超过Ri(最大流问题),同时最小不能低于Li。
    • sol:先把每条边的容量Ri-Li,也就是强制流入Li。
    • 重新计算每个点的入流量-出流量
    • 显然,如果一个点的入流量!=出流量,就需要在Li的基础上加上delta。
    • 为了分配delta,一个显然的事实就是,通过一个超级源给入流量>出流量的点,入流量-出流量的流入,(也就是在满流的情况下将会全部从这里流出去,这样出流量就平衡了)
    • 同理,给入流量<出流量的点,出流量-入流量的流出空间到超级汇
  2. 有源有汇带上下界网络流:
    • 求出一组解,是的对除了S和T以外的点,满足以上流量守恒性质
    • zoj3229 Shoot the Bullet:一个屌丝给m个女神拍照,计划拍照n天,每一天屌丝最多个C个女神拍照,每天拍照数不能超过D张,而且给每个女神i拍照有数量限制[Li,Ri],对于每个女神n天的拍照总和不能超过Gi,如果有解求屌丝最多能拍多少张照,并求每天给对应女神拍多少张照;否则输出-1。
    • 加入T到S的一条容量无穷大的边,同上面方法做,加入新源汇SS,TT,然后去掉这条边和SS,TT,再跑一次S到T的最大流。
    • 引用:当有可行流时,删除超级源点ss和超级终点dd,再对(s,d)进行一次最大流,此时得到的maxflow则为题目的解。为什么呢?因为第一次maxflow()只是求得所有满足下界的流量,而残留网络(s,d)路上还有许多自由流(没有和超级源点和超级汇点连接的边)没有流满,所有最终得到的maxflow=(第一次流满下界的流+第二次能流通的自由流)。
  3. 可行流、最小费用可行流:
    • 如果只要可行流,则不需要第二次操作。
    • 如果要最小费用,则第二次操作增广时,出现正数停止。
    • zju2314 sgu176

无向图最小割

Stoer Wagner算法:

maximum_adjacency_search:

1.设W[x]表示x到集合W中所有元素的距离和

2.不断地把W[x]最大的点加入集合W,更新W[x]

3.记录最后加入的两个点pre和cur。

stoer_wagner:

1.重复V-1次maximum_adjacency_search

2.每次操作后,如果W[cur]<ans则更新ans

3.将cur合并到pre,对(u,v,w)∈cur,使得(pre,v,wp)变为(pre,v,wp+w)

4.回到1 。

poj2914:裸题

未完待续。。

题目:

志愿者招募

>  每种志愿者i可以服务[Li,Ri]的时间,需要支付Ci的费用。

> 每天至少需要P[i]的志愿者

---------------------------------------------------------------------------

> 设第i中志愿者雇佣了X[i]个。

> X[0]+X[1]+X[2] >= P[1]

> X[1]+X[2] >=P[2]

> X[3]+X[4]+X[5]>=P[3]

……

转化为等式上下相减,发现右边的常数和为0 。每个X[i]在上下一正一负。

把每个等式看成一个节点。

如果常数>0则从S连接到方程,容量为常数

<0则从点到T连-常数

X[i]在j中为正,k中为负,从j->k

Y[i]同理

http://www.byvoid.com/blog/noi-2008-employee/

 

做题:

http://hi.baidu.com/daizhy_acm/item/5c7e60dfcf33a1f8ca0c393e

poj2391:给定n个牛棚,牛棚之间连带权边。每个牛棚有数量的上限,问最少需要多少时间可以调整牛不被淋湿。

sol:对牛棚拆点,S->u,容量奶牛数量。u->u'容量无限u'->T容量为容纳限制

二分上界,添加(u,v') (v,u')当u到v的最短路小于上界。

poj1087:给定一些插座、电器、转换器。电器有插座要求,插座只能用一次,转换器可以无限使用,问最多适配多少个电器。

sol:读入好烦……题目好晕,其实很水……S->电器(1);电器->插座种类(1);插座种类->该种类插座(1);插座种类->插座种类(INF);插座->汇(1)

其实,把插座种类和插座合并,然后向汇连该种类数量也是可以的。。

参考:

http://www.cnblogs.com/kane0526/archive/2013/04/05/3001108.html

http://blog.csdn.net/pouy94/article/details/6628521

http://blog.sina.com.cn/s/blog_700906660100v7vb.html

http://hi.baidu.com/zhanggmcn/item/e119cc25adb5a88d9c63d1e7

http://akheyun.blog.163.com/blog/static/138249276201032946358/

http://www.byvoid.com/blog/noi-2008-employee/

Category: OI | Tags: 图论 | Read Count: 858

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com