解题思路
题意可抽象为:把 D 看作可行走的空地 .,隧道是由若干段连续的空地段(. 段)与障碍段(# 段)交替组成。
“轻松移动”就是在同一 . 段内左右走;一旦至少进行过一次轻松移动(即所在 . 段长度 ≥ 2),就可以“穿墙”越过紧邻在该段一侧的一整段 #,但穿墙需要从该 . 段的末端出发并且该端至少有两个连续的 .(正好是该段末尾的两个格),落点为墙另一侧的第一个 .。之后仍可继续走或继续穿下一堵墙。
因此,从包含 D 的那一段 .(记作区间 [L, R])出发,有以下充要条件:
- 若该段触达左边界(
L==1)或右边界(R==n),直接走出即可,答案 YES。
- 若该段长度为 1(
R-L+1==1),无法进行任何“轻松移动”,也就不能启动穿墙,且不触边界时答案 NO。