#P1025. 7unar的像素涂鸦

7unar的像素涂鸦

7unar的像素涂鸦

背景

7unar 期末周复习累了,打开手机上一款叫「像素工坊」的休闲小游戏放松一下。

游戏给了你一排 nn 个像素格子,每个格子要么是黑色块,要么是白色块

这游戏有个「智能填充」功能——你只要用手指框住连续三个像素,系统就会识别它们的排列模式,帮你一键切换:

  • 黑色块 黑色块 白色块 一键变成 白色块 黑色块 黑色块(反过来也行)

  • 黑色块 白色块 白色块 一键变成 白色块 白色块 黑色块(反过来也行)

然而游戏每天只给一个挑战关卡:把初始像素序列 aa 通过有限次智能填充操作,变成目标序列 bb

通过了送体力,通不过今天就得看广告或者充钱。

7unar 既不想看广告也不想充钱,请你帮他写个程序:对每个关卡,判断能否从 aa 变到 bb

注意:输入中,黑色块用 00 表示,白色块用 11 表示。

题目描述

给你两个长度均为 nn 的二进制字符串 aabb

你可以进行以下操作任意次:

  • 选择一个子串 001,替换为 100(反过来也行:100 \to 001

  • 选择一个子串 110,替换为 011(反过来也行:011 \to 110

判断是否可以通过有限次操作将字符串 aa 变成字符串 bb

输入格式

第一行一个整数 tt1t1041 \le t \le 10^{4}),表示测试数据组数。

每组测试数据:

  • 第一行一个整数 nn1n2×1051 \le n \le 2 \times 10^{5}),表示字符串长度。

  • 第二行一个字符串 aaa=n|a| = n),由字符 0011 组成。

  • 第三行一个字符串 bbb=n|b| = n),由字符 0011 组成。

保证所有测试数据的 nn 之和不超过 2×1052 \times 10^{5}

输出格式

对于每组测试数据,如果可以变换,输出 YES,否则输出 NO

大小写不限(例如 yEsyesYesYES 均视为正确)。

样例

9
1
0
0
2
01
10
3
001
100
4
1010
0101
4
1100
1000
5
01001
10010
6
110000
000011
6
111000
000111
7
1001100
0000111
YES
NO
YES
NO
NO
YES
YES
NO
YES

样例解释

  • 第一组:a=ba = b,无需操作,输出 YES

  • 第二组:无法进行任何操作,aba \ne b,输出 NO

  • 第三组:选择 a[13]=a[1 \ldots 3] = 001,替换为 100a=ba = b,输出 YES

  • 第七组:按以下顺序操作后可达到 bb

    110000 \to 100100 \to 001100 \to 000011,输出 YES

数据范围

  • 1t1041 \le t \le 10^{4}

  • 1n2×1051 \le n \le 2 \times 10^{5}

  • n2×105\sum n \le 2 \times 10^{5}