暑期集训Day9总结(最大流与费用流)

最近一直在讲图论,今天讲了网络流,题目注定不好写(代码巨长)。。。

昨天下午打多校,导致做题拖了很多进度,到昨天晚上才做4道。。。

尽管网络流的知识本身很难,比如说Dinic算法和费用流的算法到现在也没有完全搞明白,不过并不要紧,暂时把它看成一个黑盒吧

(窝太弱了。。。)而重要的是如何建图。一旦能够建出合适的图,再套一下模板,这道题就迎刃而解了。

下面看几道例题:

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

A题(poj1087)

首先得读懂题

n种插座各一个接在电源上,
m个用电器,每个用电器有一个插座类型,
k种转换器,可以将一种类型转换为另一种。每种转换器可以用无数个。
问最少有多少用电器不能用。(引用。。。)

可以从源点向每个插座连边,用电器向汇点连边(flow=1)。每个插座相对应的用电器连边(flow=1)。对于转换器s1,s2,连s2到s1的边(flow=INF)。跑一次最大流即可,这道题还有一个坑点就是字符串处理上。。。

 

B题(poj1459)

最大流裸题,建立一个超级源点和汇点即可。

蒟蒻的我最开始以为源点和汇点不能随便选,后来。。。

 

C题(poj2391)

先用floyd求出相邻两点最短距离,然后二分答案,判断是否可以在时间不超过mid的情况下完成移动。

建图的时候可以拆点,将一个点拆成入点和出点,看每次跑出的最大流和牛的数量作比较。

 

E题(poj2135)

费用流裸题

对于每条边,容量设为1,表示每条边只能走一次,费用设为路径长度。
新加入源点和汇点,源点到起点,终点到汇点容量2,费用0。(引用。。。)

 

H题(poj3422)

以前做过这道题的弱化版,方格取数。当时用的4维dp做的,扩展后用到了今天的费用流。

求取得最大的正数也就是最小的负数,那就先将值反过来。将点拆成入点和出点x1,x2。x1与x2连2条边,(1)费用为1权值,容量为1.(2)费用为0,容量为k-1。再讲每个点x2与右或下的入点y1连边,费用为0,容量为k。左上角连源点,右下角连汇点,跑费用流即可。

 

K题(hdu5859)

查了一下,这是某年区域赛的题。总体思路最短路(SPFA/Dj)+最小割==最大流。

这道题就不写了,网上很多博主说的很好(Orz)

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

总结一下就是,图建的出来,这道题就A了

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值