求这道题正解
https://www.luogu.com.cn/problem/U240696
$chinuya$正在玩一款名叫元气骑士的游戏。
$chinuya$操纵的角色叫做小游侠,他一开始面朝下方。
我们可以把一个关卡看作一个$m $行$n$列的表格。其中有这几种区域:
$* :$表示普通的草地,没有任何功能。
$# :$表示不可击破障碍物。人物不能在上面通过。
$@ :$表示可击破障碍物。当其受到大于或等于1的伤害时就会破碎,变成草地。否则人物无法通过。
$Y:$小游侠一开始所在的位置。
$a$~$z$:关卡传送门。
数字:表示当前位置怪物的生命。如果一只怪物生命为0,则它无法对小游侠造成威胁。
小游侠每秒选择四种方式之一:
$1$、可以向上下左右四个方向之一的方向移动一个格,并向这个方向发出一次攻击。攻击第一个接触的目标将会受到一点伤害。
$2$、小游侠还可以使用技能——居合斩,向上下左右四个方向之一瞬间移动3格(如果碰到不可击破障碍物或边缘则会被迫停止)并面朝该方向,并且对经过的物体造成三点伤害。此时,小游侠处于无敌状态。这个技能使用5秒过后才可再次使用(如第一秒使用后,需要第六秒才能再使用)。
$3$、停止不动,可以向目前面对的方向发出一次攻击。攻击第一个接触的目标将会受到一点伤害。
$4$、面向上下左右四个方向之一。
注意: 以上四种操作都需要$1$秒钟时间执行。
因为小游侠很害怕,所以他不能靠近以怪物为中心的九宫格内。
现在给出这个关卡,请输出小游侠最少在第几秒可以到达传送门(格子不可以重复走)。如果不能到达,则输出“-1”。
第$1$行:两个整数$m$,$n$,表示有一个$m $行$n$列的方阵。
第 $2$~ $m+1$行,一个$m $行$n$列的方阵。表示该关卡。
仅$1$行,一个整数,表示小游侠最少在第几秒可以到达传送门(格子不可以重复走)。如果不能到达,则输出“-1”。
3 3
Y # 5
@ * #
1 * a
3
5 2
Y 3
* *
* *
* *
* h
-1
对于样例$1$:
第$1$秒:小游侠使用居合斩向下移动两格,打破沿途的障碍物,消灭怪物,此时技能被迫停止。
第$2$秒:向右移动一格。
第$3$秒:向右移动一格,到达传送门。
对于样例$2$:
小游侠在第一秒就会牺牲。
1<=m,n<=10。
怪物的生命<=3。
数据保证存在且仅存在$1$个传送门和小游侠初始位置,不保证存在怪物、草地和障碍物。
这个朋友是不是你的老师?
– 会长 2年前@会长: 哈哈你怎么知道
– 痴弩 2年前