CF1906B Button Pressing
题目描述
给定 $N$ 个按钮(编号从 $1$ 到 $N$)和 $N$ 个灯(编号从 $1$ 到 $N$)。每个灯可以处于开或关的状态。初始时,如果 $A_i = 1$,则第 $i$ 个灯是开的;如果 $A_i = 0$,则第 $i$ 个灯是关的。
按钮 $i$ 连接到灯 $i-1$(如果 $i > 1$)和灯 $i+1$(如果 $i < N$)。每次操作,你可以按下按钮 $i$,但前提是灯 $i$ 是开的。当按下按钮时,与该按钮相连的灯的状态会被切换。具体来说,如果某个灯原来是开着的,则会变成关的;如果原来是关的,则会变成开的。注意,灯 $i$ 并不连接到按钮 $i$,因此按下按钮 $i$ 时,灯 $i$ 的状态不会发生变化。
经过若干次操作后,你希望第 $i$ 个灯是开的当且仅当 $B_i = 1$,是关的当且仅当 $B_i = 0$。请判断是否有可能实现这个目标。
输入格式
本题包含多组测试数据。第一行为整数 $T$($1 \leq T \leq 1000$),表示测试数据组数。每组测试数据包含三行。
每组测试数据的第一行为一个整数 $N$($3 \le N \le 200\,000$)。所有测试数据中 $N$ 的总和不超过 $200\,000$。
第二行为一个长度为 $N$ 的字符串 $A$,每个字符为 $0$ 或 $1$,表示每个灯的初始状态。
第三行为一个长度为 $N$ 的字符串 $B$,每个字符为 $0$ 或 $1$,表示每个灯的目标状态。
输出格式
对于每组测试数据,如果可以通过若干次操作使所有灯达到目标状态,则输出一行 YES;否则输出一行 NO。
说明/提示
样例输入输出 #1 说明
对于第一个测试用例,依次按下按钮 $4, 2, 4, 3, 1, 2$,按钮的状态变化如下:$0101 \rightarrow 0111 \rightarrow 1101 \rightarrow 1111 \rightarrow 1010 \rightarrow 1110 \rightarrow 0100$。
对于第二个测试用例,你无法按下任何按钮,因此无法达到目标状态。
由 ChatGPT 4.1 翻译