U440592 Minecraft-herobrine之战
题目背景
神不会流血$!$
题目描述
给出一个 $a \times a$ 正方型矩阵,$0$ 代表空地,$1$ 代表主角,$n$ 表示这里有一个生命值为 $n$ 的 herobrine 分身;herobrine 分身生命值在一半及一半以下时会对周围 $3 \times 3$ 范围造成 $2$ 点伤害,否则只会对一格内的主角造成 $1$ 点伤害;主角有 $3$ 点生命值,他会对当前格的 herobrine 分身造成 $1$ 点伤害,他还可以使用两个技能:
- 对刚刚行进方向 $5$ 格 $3 \times 3$ 范围内敌人造成 $2$ 点伤害,并移动到 $5$ 格外(不能出图)。
- 对当前格 $3 \times 3$ 范围内敌人造成 $3$ 点伤害。
两个技能均需一次普攻蓄力,蓄力后两个技能均可使用一次,主角只可以前后左右移动,herobrine 分身不能移动。
但战场上局势千变万化,在主角使用一次技能时,若敌人未全部消灭, herobrine 本体会考虑两种选择:
- 选择 $\texttt{A}$:给坐标 $(x,y)$ 的 herobrine 分身增加 $z$ 生命值或在坐标 $(x,y)$ 创建一个生命值为 $z$ 的 herobrine 分身。
- 选择 $\texttt{B}$:让主角降低 $1$ 点生命值。
请输出最少步数攻击路线,前后左右移动用 $\texttt{W}$、$\texttt{S}$、$\texttt{A}$、$\texttt{D}$ 表示,技能用数字$\texttt{1}$、$\texttt{2}$ 表示。
若无解,输出 `error`。
输入格式
第一行为一个整数 $a$,表示地图大小。
接下来有 $a$ 行,每行输入 $a$ 个整数(之间用一个空格分隔),代表地图。
第 $2+a$ 行,先读入一个字符:
- 若字符为 `A`,输入三个整数 $x$、$y$、$z$,表示给坐标 $(x,y)$ 的 herobrine 分身增加 $z$ 生命值或在坐标 $(x,y)$ 创建一个生命值为 $z$ 的 herobrine 分身。
- 若字符为 `B`,接下来无需输入,代表让主角降低 $1$ 点生命值。
输出格式
一行,主角的移动及技能释放,
若该样例无解,输出 `error`。
说明/提示
对于$100\%$的数据,有$2$ ≤ $n$ ≤ $4$ , $1$ ≤ $a$ , $x$ , $y$ ≤ $10$ 。