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

【bzoj1927 星际竞速】

时间:2017-12-04 23:38:27      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:设计   驾驶   能力   是什么   费用流   最大流   范围   bzoj   描述   

题目描述:

  给定N颗星球,M条航道,每颗星球都有一个引力值。你驾驶着一艘飞船,这艘飞船有两种模式,一种是高速行驶模式,另一种是能力爆发模式。高速行驶模式下,只能由一个星球前往引力比他大的星球,并且要花费这条航道权值的时间。能力爆发模式下,可以从一个星球到达任意一个星球,需要花费所到达星球的定位时间。比赛要求从一个和这N个星球没有任何航路的星球出发,然后遍历所有的N个节点恰好一次。现在你要设计一种方案,求出花费时间的最小值。

数据范围:

  1<=N<=800, 0<=M<=15000

题解:

  显然到一个点的方式有两种。花费时间的最小值与小数据就可以知道这题是费用流。

  想想费用是什么吧。一种直接到这个点花定位时间,一种从一个点到另一个点。(一个点只能到一个点)

  于是考虑拆点,S向每个点的x连f=1,w=0的边,每个点的y向T连f=1,w=0的边。这时候最大流就能保证每个点都被跑过。

  S向每个点的y连f=1,w为定位时间的边。把航道在xy中连起来,f=1,w为航道权值的时间。(因为每条边的流为1,所以保证一个点出发只会到一个点)

  费用流即可。

【bzoj1927 星际竞速】

标签:设计   驾驶   能力   是什么   费用流   最大流   范围   bzoj   描述   

原文地址:http://www.cnblogs.com/Dndlns/p/7979350.html

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