SP12249 SPIDY - Spiderman vs Sandman

题目描述

蜘蛛侠正在与沙人展开一场对决。 场地中有两座高度为 $H$ 的玻璃大楼。每栋楼的外墙上从底到顶共有 $H$ 个等大的窗户。有些窗户是打开的,蜘蛛侠不能停留在这些窗户上。 在行动中,蜘蛛侠可以选择: 1. 向上攀爬至其所在大楼当前窗户的上一个窗户。 2. 向下滑至其所在大楼当前窗户的下一个窗户。 3. 借助蛛网跳跃到对面大楼的比当前高度高 $K$ 个窗户。 与此同时,沙人每步以 1 的速度稳步上升。 题目要求中假设蜘蛛侠与沙人轮流行动:蜘蛛侠先行一步,然后是沙人的回合。 你的任务是帮助蜘蛛侠确保在每轮沙人行动结束后,蜘蛛侠仍保持在沙人的高度之上或相同高度。蜘蛛侠先行动,两人最初都处在高度 0(即沙人还在地面上,而蜘蛛侠则在左边大楼的最底层窗户上,该窗户保证是关闭的)。 需要注意的是,如果蜘蛛侠到达高度 $\ge H$ 的位置,就视为成功逃离。 作为蜘蛛侠的好朋友,你需要指导他在最短步数内顺利逃脱,如果有可能的话。

输入格式

第一行包含一个整数 $T$。 接下来有 $T$ 组测试数据,每组测试数据有 3 行。 每组的第一行包含两个空格分隔的整数 $H$ 和 $K$。 接下来的两行描述了两栋大楼的窗口状态。 第二行是左侧大楼的窗口状态——一个长度为 $H$ 的字符串。第 $i$ 个字符表示位于高度 $(i-1)$ 和 $i$ 之间的窗户状态:字符 `-` 表示窗户关闭(可安全落脚),字符 `X` 表示窗户打开。 第三行是右侧大楼的窗口状态,格式与左侧大楼相同。

输出格式

对于每组测试数据,输出一个整数 $x$,表示蜘蛛侠成功逃出所需的步数。如果蜘蛛侠无法逃出并不得不在建筑内作战,则输出 `NO`。

说明/提示

- $1 \le T \le 10$ - $1 \le H, K \le 10^5$ **本翻译由 AI 自动生成**