CF1861B.Two Binary Strings

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Two Binary Strings

题目描述

给定两个长度相等、仅由字符 0011 组成的字符串 aabb,且这两个字符串都以字符 00 开头,以字符 11 结尾。

你可以对任意一个字符串进行如下操作任意次(也可以不操作):

  • 选择其中一个字符串和其中两个相同的字符,然后将这两个字符之间的所有字符都变成这两个字符的值。

形式化地说,你选择两个整数 llrr,满足 1l<rs1 \le l < r \le |s|sl=srs_l = s_r,然后将所有满足 l<i<rl < i < rsis_i 替换为 sls_l

例如,如果当前字符串为 010101,你可以通过一次操作将其变为以下任意一种:

  • 000101,若选择 l=1l = 1r=3r = 3
  • 000001,若选择 l=1l = 1r=5r = 5
  • 010001,若选择 l=3l = 3r=5r = 5
  • 010111,若选择 l=4l = 4r=6r = 6
  • 011111,若选择 l=2l = 2r=6r = 6
  • 011101,若选择 l=2l = 2r=4r = 4

你需要判断,是否可以通过若干次上述操作,使得两个字符串变得完全相同。

输入格式

第一行包含一个整数 tt1t20001 \le t \le 2000),表示测试用例的数量。

每个测试用例包含两行:

  • 第一行是字符串 aa2a50002 \le |a| \le 5000),仅包含字符 0011
  • 第二行是字符串 bb2b50002 \le |b| \le 5000),仅包含字符 0011

输入的额外约束:

  • 每个测试用例中,a=b|a| = |b|(两个字符串长度相等);
  • 每个测试用例中,两个字符串都以 00 开头,以 11 结尾;
  • 所有测试用例中,所有字符串 aa 的总长度不超过 50005000

输出格式

对于每个测试用例,如果可以通过若干次操作使得两个字符串相等,输出 YES;否则输出 NO。你可以用任意大小写输出答案。

说明/提示

在第一个测试用例中,可以进行如下操作:

  1. 选择字符串 aal=2l = 2r=4r = 4;操作后,aa 变为 01110001,bb 变为 01110101;
  2. 选择字符串 bbl=5l = 5r=7r = 7;操作后,aa 变为 01110001,bb 变为 01110001。

在第二个测试用例中,两个字符串已经相等。

在第三个测试用例中,可以进行如下操作:

  1. 选择字符串 aal=4l = 4r=6r = 6;操作后,aa 变为 000111,bb 变为 010111;
  2. 选择字符串 bbl=1l = 1r=3r = 3;操作后,aa 变为 000111,bb 变为 000111。

在第四和第五个测试用例中,不可能使两个字符串相等。

由 ChatGPT 4.1 翻译

样例

7
01010001
01110101
01001
01001
000101
010111
00001
01111
011
001
001001
011011
010001
011011
YES
YES
YES
NO
NO
NO
YES

在线编程 IDE

建议全屏模式获得最佳体验