#P15683. [ICPC 2023 Jakarta R] Button Pressing

[ICPC 2023 Jakarta R] Button Pressing

说明

给定 NN 个按钮(编号从 11NN)和 NN 个灯(编号从 11NN)。每个灯可以处于开或关的状态。初始时,如果 Ai=1A_i = 1,则第 ii 个灯是开的;如果 Ai=0A_i = 0,则第 ii 个灯是关的。

按钮 ii 连接到灯 i1i-1(如果 i>1i > 1)和灯 i+1i+1(如果 i<Ni < N)。每次操作,你可以按下按钮 ii,但前提是灯 ii 是开的。当按下按钮时,与该按钮相连的灯的状态会被切换。具体来说,如果某个灯原来是开着的,则会变成关的;如果原来是关的,则会变成开的。注意,灯 ii 并不连接到按钮 ii,因此按下按钮 ii 时,灯 ii 的状态不会发生变化。

经过若干次操作后,你希望第 ii 个灯是开的当且仅当 Bi=1B_i = 1,是关的当且仅当 Bi=0B_i = 0。请判断是否有可能实现这个目标。

输入格式

本题包含多组测试数据。第一行为整数 TT1T10001 \leq T \leq 1000),表示测试数据组数。每组测试数据包含三行。

每组测试数据的第一行为一个整数 NN3N2000003 \le N \le 200\,000)。所有测试数据中 NN 的总和不超过 200000200\,000

第二行为一个长度为 NN 的字符串 AA,每个字符为 0011,表示每个灯的初始状态。

第三行为一个长度为 NN 的字符串 BB,每个字符为 0011,表示每个灯的目标状态。

输出格式

对于每组测试数据,如果可以通过若干次操作使所有灯达到目标状态,则输出一行 YES;否则输出一行 NO。

2
4
0101
0100
3
000
010
YES
NO
5
7
0101011
1111010
5
11111
00000
4
1101
1101
6
101010
100100
3
000
000
NO
NO
YES
YES
YES

提示

样例输入输出 #1 说明

对于第一个测试用例,依次按下按钮 4,2,4,3,1,24, 2, 4, 3, 1, 2,按钮的状态变化如下:$0101 \rightarrow 0111 \rightarrow 1101 \rightarrow 1111 \rightarrow 1010 \rightarrow 1110 \rightarrow 0100$。

对于第二个测试用例,你无法按下任何按钮,因此无法达到目标状态。

由 ChatGPT 4.1 翻译