CF1766C Hamiltonian Wall
题目描述
Monocarp Hamilton 爵士计划粉刷他的墙。墙可以表示为一个由 $2$ 行 $m$ 列组成的网格。最初,墙是完全白色的。
Monocarp 想在墙上画一幅黑色的图案。具体来说,如果 $c_{i, j} = $ 'B',则第 $i$ 行第 $j$ 列的单元格 $(i, j)$ 应涂成黑色;如果 $c_{i, j} = $ 'W',则保持为白色。此外,他希望每一列至少有一个黑色单元格,即对于每个 $j$,$c_{1, j}$、$c_{2, j}$ 或两者之一等于 'B'。
为了让图案看起来平滑,Monocarp 想要将画笔放在某个单元格 $(x_1, y_1)$,并沿着路径 $(x_1, y_1), (x_2, y_2), \dots, (x_k, y_k)$ 移动,使得:
- 对于每个 $i$,$(x_i, y_i)$ 和 $(x_{i+1}, y_{i+1})$ 共享一条边;
- 所有黑色单元格在路径中恰好出现一次;
- 白色单元格不会出现在路径中。
请判断 Monocarp 是否能够完成粉刷。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $m$($1 \le m \le 2 \cdot 10^5$),表示墙的列数。
接下来的两行,每行包含一个长度为 $m$ 的字符串 $c_i$,每个字符为 'B' 或 'W'。如果 $c_{i, j}$ 为 'B',则单元格 $(i, j)$ 应涂成黑色;如果为 'W',则保持为白色。
此外,对于每个 $j$,$c_{1, j}$、$c_{2, j}$ 或两者之一等于 'B'。
所有测试用例中 $m$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,如果 Monocarp 能够完成粉刷,输出 "YES";否则输出 "NO"。
说明/提示
在第一个测试用例中,Monocarp 可以沿着路径 $(2, 1)$,$(2, 2)$,$(1, 2)$,$(1, 3)$ 移动画笔。所有黑色单元格在路径中恰好出现一次,且没有白色单元格出现在路径中。
在第二个测试用例中,Monocarp 可以沿着路径 $(1, 1)$,$(2, 1)$ 移动。
在第三个测试用例中:
- 路径 $(1, 1)$,$(2, 1)$,$(2, 2)$,$(2, 3)$,$(1, 3)$,$(2, 4)$,$(2, 5)$,$(1, 5)$ 不满足条件,因为单元格 $(1, 3)$ 和 $(2, 4)$ 不共享边;
- 路径 $(1, 1)$,$(2, 1)$,$(2, 2)$,$(2, 3)$,$(1, 3)$,$(2, 3)$,$(2, 4)$,$(2, 5)$,$(1, 5)$ 不满足条件,因为单元格 $(2, 3)$ 被访问了两次;
- 路径 $(1, 1)$,$(2, 1)$,$(2, 2)$,$(2, 3)$,$(2, 4)$,$(2, 5)$,$(1, 5)$ 不满足条件,因为黑色单元格 $(1, 3)$ 没有被访问;
- 路径 $(1, 1)$,$(2, 1)$,$(2, 2)$,$(2, 3)$,$(2, 4)$,$(2, 5)$,$(1, 5)$,$(1, 4)$,$(1, 3)$ 不满足条件,因为白色单元格 $(1, 4)$ 出现在路径中。
由 ChatGPT 4.1 翻译