博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ-1927-星际竞速-SDOI2010
阅读量:5333 次
发布时间:2019-06-15

本文共 967 字,大约阅读时间需要 3 分钟。

描述

10 年一度的银河系赛车大赛又要开始了。作为全银河最盛大的活动之一, 夺得这个项目的冠军无疑是很多人的梦想,来自杰森座 α星的悠悠也是其中之一。 赛车大赛的赛场由 N 颗行星和M条双向星际航路构成,其中每颗行星都有 一个不同的引力值。大赛要求车手们从一颗与这 N 颗行星之间没有任何航路的 天体出发,访问这 N 颗行星每颗恰好一次,首先完成这一目标的人获得胜利。 由于赛制非常开放,很多人驾驶着千奇百怪的自制赛车来参赛。这次悠悠驾 驶的赛车名为超能电驴,这是一部凝聚了全银河最尖端科技结晶的梦幻赛车。作 为最高科技的产物,超能电驴有两种移动模式:高速航行模式和能力爆发模式。 在高速航行模式下,超能电驴会展开反物质引擎,以数倍于光速的速度沿星际航 路高速航行。在能力爆发模式下,超能电驴脱离时空的束缚,使用超能力进行空 间跳跃——在经过一段时间的定位之后,它能瞬间移动到任意一个行星。 天不遂人愿,在比赛的前一天,超能电驴在一场离子风暴中不幸受损,机能 出现了一些障碍:在使用高速航行模式的时候,只能由每个星球飞往引力比它大 的星球,否则赛车就会发生爆炸。 尽管心爱的赛车出了问题,但是悠悠仍然坚信自己可以取得胜利。他找到了 全银河最聪明的贤者——你,请你为他安排一条比赛的方案,使得他能够用最少 的时间完成比赛。


分析

  • 凡是遇到使每个点都经过一次且总时间最短(长)的题目就可以考虑网络流的最小费用最大流. 拆点, S向Xi连一条容量为1费用为0的边, Yi向T连一条容量为1费用为0的边, 如果i->j有边, 就从Xi->Yj连一条容量为1费用为路径长度的边. 然后跑S->T最小费用最大流, 费用就是最短路径长度.
  • 分析一下上面的过程, Yi向T的边表示经过了i, 因为最大流所以这些边一定会满流, 而且容量为1表示只经过一次. S向Xi的边表示从i出发, 经过i代表着到达i再从i离开.
  • 对于题目中的瞬移, 其实不需要把所有边全都加上, 只需要加 S->Yi 容量为1费用为瞬移定位时间. 相当于j高速行驶到达i的方案和瞬移到i的方案择优. 可知如果最后S->i的边没有流的话, 最优方案就是到达i之后瞬移到达其他点.

代码

转载于:https://www.cnblogs.com/wfwbz/p/4355827.html

你可能感兴趣的文章
vs2010 无法创建 *.edmx(Entity Frame Work) 文件的问题
查看>>
<C++>查询
查看>>
2019-07-29 CentOS安装
查看>>
Leetcode-944 Delete Columns to Make Sorted(删除列以使之有序)
查看>>
P1087-FBI树
查看>>
怎么在某个控制器中判断程序是否在前台或后台
查看>>
第三周vim入门学习1
查看>>
Linux内核分析(第九周)
查看>>
Serlvet学习笔记之一 ——实现servlet的3种方法
查看>>
批处理
查看>>
使用pycharm编写自动化脚本
查看>>
browser-sync启动命令
查看>>
HttpWebRequest请求返回非200的时候 HttpWebResponse怎么接受返回错误提示
查看>>
VBScript 内置函数
查看>>
java打jar包的几种方式详解
查看>>
关于sublime3中package controle不出来的问题
查看>>
groovy
查看>>
对象扩展
查看>>
js学习总结----事件基础
查看>>
7_20 day25 总结
查看>>