题目名称 | 1664. [POJ 2841] 航海游戏 |
---|---|
输入输出 | navigationgame.in/out |
难度等级 | ★★★☆ |
时间限制 | 2000 ms (2 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | cstdio 于2014-06-12加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:6, 提交:26, 通过率:23.08% | ||||
_Itachi | 100 | 0.277 s | 9.02 MiB | C++ |
L_in | 100 | 0.394 s | 9.08 MiB | C++ |
rpCardinal | 100 | 0.595 s | 1.18 MiB | C++ |
rpCardinal | 100 | 0.797 s | 2.97 MiB | C++ |
葳棠殇 | 100 | 1.124 s | 1.18 MiB | C++ |
cstdio | 100 | 2.671 s | 5.47 MiB | C++ |
rpCardinal | 90 | 0.797 s | 2.97 MiB | C++ |
rpCardinal | 90 | 0.801 s | 2.67 MiB | C++ |
rpCardinal | 60 | 0.914 s | 18.51 MiB | C++ |
rpCardinal | 60 | 0.955 s | 18.51 MiB | C++ |
关于 航海游戏 的近10条评论(全部评论) | ||||
---|---|---|---|---|
感谢COGS的数据让我找到了一个极其不起眼的BUG,感谢给我提示的 @cstdio 同学!
| ||||
回复 @cstdio :
Orzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
digital-T
2014-06-12 20:13
3楼
| ||||
回复 @cstdio :
Orzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Chenyao2333
2014-06-12 10:32
2楼
| ||||
真难……
式子推错是几个意思…… 数据淼,但不代表凸包维护写错了也能过,因为有4组数据是我精心对拍出来的→_→ |
navigationgame.in
输出文件:navigationgame.out
简单对比这里有一个N行M列的方阵,第N行象征着这里,第1行象征着海那边的彼岸。这中间的N-2行象征着你所期盼的大海。
你的目标是,控制一艘船,从这里的任意一个停泊处(用“H”表示),经过最短的航行时间到达对岸的任意一个停泊处。只有这样,你才可以通过这个通道。
你的船只能向左,向右或向上前进,一次一格,而且除非登陆(这时你必须到达一个停泊处,从而结束你的游戏),你是不能驶向陆地的。
记住,人生没有回头路。因此,一旦你离开一个格子,就永远也无法返回。
向着目标航行永远是一件令人愉快的事情。因此向上航行只需要消耗一个单位的时间。但是,看似原地打转的左右方向的航行会让人厌倦。如果某次左右航行之前你已经连续进行了x次左右航行,你这次左右航行所消耗的时间就是x+1个时间单位。
海上你可能会遇到:
O:障碍物。障碍物占据的格子,你永远也不会到达。
F:命运之轮。经过这里,你的命运会从此逆转。我了解你的命运有多么不幸。因此,你必须在航行途中经过奇数次命运之轮,才能安全到达彼岸。
B:祝福石。走到这里是不需要时间的。
S:暴风雨的咒符。走到这里所需的时间是正常情况的两倍。
第一行有两个整数N,M,代表地图大小。N,M不超过1000.
接下来有N行,每行有M个字符,描述了地图:
在第1行和第N行中,‘H’代表停泊处。
在其余行中,‘.’,‘O’,‘F’,‘B’,‘S’分别代表空格子,障碍物,命运之轮,祝福石,暴风雨的咒符。
如果解存在,输出一个整数,即需要的最短时间,否则输出“No solution”。
5 11
...H...H...
.O.BF.FS.O.
O.O.OOO.O.O
.O...F...O.
.....H.....
6
样例如图:
翻译by 陈雪,《问题中的变与不变》