码迷,mamicode.com
首页 > 其他好文 > 详细

【网络流24题】----题解(部分,持续更新...)

时间:2015-04-10 09:36:54      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

搭配飞行员

搭配飞行员:http://cogs.yeefan.us/cogs/problem/problem.php?pid=14
题解:建立虚拟源点汇点,然后水过
code:http://cogs.yeefan.us/cogs/submit/code.php?id=148410

数字梯形

数字梯形:http://cogs.yeefan.us/cogs/problem/problem.php?pid=738
题解:
规则(1)
把梯形中每个位置抽象为两个点(i.a),(i.b),建立附加源S汇T。
1、对于每个点i从(i.a)到(i.b)连接一条容量为1,费用为点i权值的有向边。
2、从S向梯形顶层每个(i.a)连一条容量为1,费用为0的有向边。
3、从梯形底层每个(i.b)向T连一条容量为1,费用为0的有向边。
4、对于每个点i和下面的两个点j,分别连一条从(i.b)到(j.a)容量为1,费用为0的有向边。
求最大费用最大流,费用流值就是结果。
规则(2)
把梯形中每个位置看做一个点i,建立附加源S汇T。
1、从S向梯形顶层每个i连一条容量为1,费用为0的有向边。
2、从梯形底层每个i向T连一条容量为无穷大,费用为0的有向边。
3、对于每个点i和下面的两个点j,分别连一条从i到j容量为1,费用为点i权值的有向边。
求最大费用最大流,费用流值就是结果。
规则(3)
把梯形中每个位置看做一个点i,建立附加源S汇T。
1、从S向梯形顶层每个i连一条容量为1,费用为0的有向边。
2、从梯形底层每个i向T连一条容量为无穷大,费用为0的有向边。
3、对于每个点i和下面的两个点j,分别连一条从i到j容量为无穷大,费用为点i权值的有向边。
求最大费用最大流,费用流值就是结果。
其实第二个和第三个都很好处理,就是第一个有些麻烦,对于这个题,我们建立n排点还是比较好写的

code:http://cogs.yeefan.us/cogs/submit/code.php?id=157717

负载平衡

负载平衡:http://cogs.yeefan.us/cogs/problem/problem.php?pid=741
题解:
首先求出所有仓库存货量平均值,设第i个仓库的盈余量为A[i],A[i] = 第i个仓库原有存货量 - 平均存货量。建立二分图,把每个仓库抽象为两个节点Xi和Yi。增设附加源S汇T。
1、如果A[i]>0,从S向Xi连一条容量为A[i],费用为0的有向边。
2、如果A[i]<0,从Yi向T连一条容量为-A[i],费用为0的有向边。
3、每个Xi向两个相邻顶点j,从Xi到Xj连接一条容量为无穷大,费用为1的有向边,从Xi到Yj连接一条容量为无穷大,费用为1的有向边。
求最小费用最大流,最小费用流值就是最少搬运量。

code:http://cogs.yeefan.us/cogs/submit/code.php?id=157626

【网络流24题】----题解(部分,持续更新...)

标签:

原文地址:http://blog.csdn.net/fzhvampire/article/details/44974297

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!