网站页面
当前课程
成员
General
主题 1
主题 2
主题 4
主题 5
主题 6
主题 7
主题 8
主题 9
主题 10
主题 11
主题 12
主题 13
主题 14
主题 15
主题 16
主题 17
主题 18
主题 19
主题 20
[POJ2841]航海游戏
成绩 | 开启时间 | 2014年09月19日 星期五 10:08 | |
折扣 | 0.8 | 折扣时间 | 2014年09月26日 星期五 10:08 |
允许迟交 | 是 | 关闭时间 | 2014年09月26日 星期五 10:08 |
输入文件 | 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 陈雪,《问题中的变与不变》