【ECNU OJ】 tag = flows 上部分

Problem #2182EOJ 2182 Dining

 

题目大意:老题了。食物,饮料分配给奶牛,每头牛有他爱吃和不爱吃的。求怎么匹配能让更多牛满足。

 

思路:

1、只要熟悉网络流就应该会想到一个 S----T 一类的建图。每条边权值为1,类似于二分图匹配,然后高高兴兴地跑了一遍最大流。然后错了。

 

        2、然后你就开始想这是怎么回事,在草稿纸上开始画起了图。S——A1——B1——C1——T,似乎十分正确。

      

3、惊鸿一瞥,你看到如果存在一头奶牛,能够吃两种套餐的时候,该点有2的流量进,2的流量出,也就是说,一头牛吃了两顿大餐,这是我们无法接受的。不能因为多吃一顿就多算一次。

 

        4、那么怎么办呢?其实很好想,拆点!牛拆成<1——牛2>。牛1留着和之前的食物匹配,牛2留着和饮料匹配。这样一来,就能保证每头牛不多吃抢吃了。跑最大流,完毕。

 

 

思考:

        细一看其实就是把两个二分图并起来了,姑且把这类题目称作“二分图两次连续最大匹配

 

 

 

 

 

Problem #3400EOJ 3400 Admiral

题目大意:两条不相交最短路径和。

 

思路:

1.      按照题目的数据,若联通,则连一条流量1,费用为给出的边。

2.      超级源点源点终点超级终点。流量2,费用0.

3.      最小费用最大流

 

思考:

        对于n条路径和来说,也是如此。把流量改成n即可

        若要判断存在性,即判断流量是否小于n

 

 

 

 

 

 

Problem #3396EOJ 3396 度度熊的交易计划

题目(中文直接放题目):

度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题:

喵哈哈村以及周围的村庄可以看做是一共由 n个片区,m条公路组成的地区。由于生产能力的区别,第 i个片区能够花费 ai元生产 1 个商品,但是最多生产 bi个。同样的,由于每个片区的购买能力的区别,第 i个片区也能够以 ci的价格出售最多 di个物品。

由于这些因素,度度熊觉得只有合理的调动物品,才能获得最大的利益。据测算,每一个商品运输 1 公里,将会花费 1 元。那么喵哈哈村最多能够实现多少盈利呢?

 

 

思路:

1.      题目中涉及了两个量,一个叫商品,一个叫价格。大致意思也就是说在有限的商品下,合适分配,从而获得最大收益

2.      每个点都有一定的性质:都能产出商品,都能卖出商品,并且都有限。然后思考在单点情况下的构图。如何做到呢?

源点S>当前点P 构造一条边,流量为bi(生成bi最多)价格为ai(生产1个单位需要ai元)
当前点P>汇点S  构造一条边,流量为di(卖出di最多)价格为ci(卖一个可以赚ci元)

3.      这时候思考,必然ci ai有一个为负数,讲道理来说,应该是ai是负数,因为是耗钱。然而我们需要的是最小费用最大流,那怎么办呢?取反。所以我们将连向汇点的边权从ci变成-ci,而ai保持不变。

4.      然后在思考城镇运输的情况。首先,道路运输没有负载,所以加边必定是无限流量,然后,运送时每单位商品消耗价格与城镇距离成正比,所以边权时应该是一个负数,值为城镇距离长度。但我们因为进行了取反操作,所以城镇之间连一条流量无限,费用为距离的边(双向)。

5.      然后再跑最小费用可行流。

6.      将获得的答案取反(成为了最大费用可行流)

 

注:什么是可行流?其实就是跑最小费用流,但你跑着跑着你会发现从某条路径开始起,你开始亏钱了。那是不能接受的,亏钱就停了。

 

 

 

 

 

Problem #3397EOJ 3397 Dual Core CPU

题目大意:

有两个集合AB。有一系列元素需要放在A或者B两个集合其中一个里。对于任意的元素,放在AB中的开销不同。另外,有些元素对如果不在一个相同集合里,会产生额外开销,求分配元素的最小开销。

 

 

 

思路:

1、           其实看原题的时候,我第一感觉:难道又是一题费用流?后来发现不对,这道题虽说是在讲“开销”,但题目大意被我这么抽象地一改动,它其实是在讲“集合的分配”。

2、           对于某一元素,要么在A,要么在B。题目要求我们要把这堆元素一分为二,并让我们求得最小开销。

3、           “割”:通俗地理解割,就是在一张有源点汇点地网络流图中,把它通过某种方式切开,使得分割下来的子图个个独立,不再联通。即割完以后,就会出现两个独立集合,一个有A,一个有B
(另:最大流 = 最小割不做证明)

4、           通过割的思想,我们初步观察,如果不考虑元素对的影响,这个题目的一种解法就是把AB集合看成源点汇点,与每个元素都连一条边,流量为开销大小。跑最大流出解

5、           接下来思考如何处理元素对:(由直觉:两点连边)
我们要所考虑的是,在割的过程中,让元素对“切不干净”。按常理,比如a->A,b->B只要分别咔嚓左一刀右一刀就结束了。但是因为我们想让它切不干净,需要补一刀才行,就可以在a,b节点中在练一条边,流量大小为元素对的开销。这样一来,如果是左右一刀切,不会产生粘连现象(虽然内部粘着,但是我们切的时候是只看外表的)。但是如果左一刀右一刀,就会产生粘连现象,需要额外的开销。

6、           到此,整个构图完毕,求最小割,跑最大流,结束。

 

 

归类:

1.      最小割 2.独立集合分配问题

 

 

 

 

Problem #3402EOJ 3402 最大获利

题目:

新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战。THU 集团旗下的 CS&T 通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研究、站址勘测、最优化等项目。

在前期市场调查和站址勘测之后,公司得到了一共N 个可以作为通讯信号中转站的地址,而由于这些地址的地理位置差异,在不同的地方建造通讯中转站需要投入的成本也是不一样的,所幸在前期调查之后这些都是已知数据:

  • 建立第 i 个通讯中转站需要的成本为 Pi (1≤iN)。
  • 公司调查得出了所有期望中的用户群,一共 M 个。关于第 i 个用户群的信息概括为 Ai,Bi,Ci:这些用户会使用中转站 Ai 和中转站 Bi 进行通讯,公司可以获益 Ci。(1≤iM,1≤Ai,BiN)

THU 集团的 CS&T 公司可以有选择的建立一些中转站(投入成本),为一些用户提供服务并获得收益(获益之和)。那么如何选择最终建立的中转站才能让公司的净获利最大呢?

 

 

思路.

1.      获利 = 收益 - 投入

2.      最大权闭合图

3.     把用户群和中转站看成n+m个点,每个点有一个权值,用权值的正负表示获利还是花费。

4.     满足用户群vi,必须建造AiBi,连边<vi, Ai>, <vi, Bi>

5.     得到一副图,而本题所求的最大获利显然就是最大权闭合图的权。

6.     于是,s连到每个用户群vi,权值为Ci,每个中转站ui连到t,权值为花费Pi,原图中<vi, Ai>,<vi, Bi>的权值全部设为INF

7. 最大权闭合图的的权 = 原图中权值为正的点的和(所有用户的收益之和) - 最小割(最大流)

感觉讲不来了参考:http://blog.csdn.net/u011265346/article/details/43053193

 

对这类模型不够了解透彻。

 

 

(上)结束。

 有源码,懒得传。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值