U213465 [GDOI2022 普及组] 机器人
题目描述
刚上初一的小纯特别喜欢机器人,这周末,她报名了学校的“小机器人俱乐部”,而进入俱乐部需要通过一场考试。
考试场地可以看作一个 $n\times m$ 的网格图,行从上往下标号为 $1,\cdots,n$,列从左往右标号为 $1,\cdots,m$。每个格子有三种可能:空地,障碍物,机器人(有且只有一个),分别用 `.`、`*`、`R` 表示。现在小纯需要控制机器人在考试场地上行走,她每秒可以发送一条指令,为 `W`——往上走、`S`——往下走、`A`——往左走、`D`——往右走的其中之一。由于俱乐部的机器人是避障机器人,当机器人接收到一条指令的时候,如果即将到达的位置为障碍物,那么机器人将留在原地,否则机器人向对应方向走一步。如果其走出边界则考试失败(例如在第一行发送指令向上走)。
为了增加考试的难度,俱乐部提供的机器人的信号接收器都存在问题。换言之,对于小纯给出的每一条指令,机器人有可能接收到指令并执行,也有可能接收不到指令并保持不动。
现在小纯提供了一个指令序列,她想知道,这个指令序列是否存在某些情况使得这个指令序列走出边界。
输入格式
每个测试点包含多组数据。
第一行一个正整数 $T$,表示数据组数。
对于每组数据:
第一行一个由 `W`,`A`,`S`,`D` 组成的字符串 $S$,表示小纯的指令序列。
第二行两个正整数 $n,m$ 表示考试场地的长度和宽度。
接下来 $n$ 行,每行一个长度为 $m$ 的字符串,描述考试场地。
输出格式
对于每组数据,输出一行。`YES` 表示可能走出考试场地,`NO` 表示不可能走出场地。
说明/提示
令 $\lvert S\rvert$ 表示指令序列长度。对于所有测试点,$1\leq T\leq 10$,$1\leq \lvert S\rvert \leq 10^5$,$1\leq n,m\leq 500$。
|测试点|$T\leq$|$\lvert S\rvert\leq$|$n,m\leq$|
|:-:|:-:|:-:|:-:|
|$1\sim 4$|$\leq 10$|$\leq 15$|$\leq 10$|
|$5\sim 6$|$\leq 10$|$\leq 50$|$\leq 50$|
|$7\sim 10$|$\leq 10$|$\leq 1000$|$\leq 50$|
|$11\sim 14$|$\leq 10$|$\leq 10^5$|$\leq 70$|
|$15\sim 20$|$\leq 10$|$\leq 10^5$|$\leq 500$|