CF1861B Two Binary Strings
题目描述
给定两个长度相等、仅由字符 $0$ 和 $1$ 组成的字符串 $a$ 和 $b$,且这两个字符串都以字符 $0$ 开头,以字符 $1$ 结尾。
你可以对任意一个字符串进行如下操作任意次(也可以不操作):
- 选择其中一个字符串和其中两个相同的字符,然后将这两个字符之间的所有字符都变成这两个字符的值。
形式化地说,你选择两个整数 $l$ 和 $r$,满足 $1 \le l < r \le |s|$ 且 $s_l = s_r$,然后将所有满足 $l < i < r$ 的 $s_i$ 替换为 $s_l$。
例如,如果当前字符串为 010101,你可以通过一次操作将其变为以下任意一种:
- 000101,若选择 $l = 1$,$r = 3$;
- 000001,若选择 $l = 1$,$r = 5$;
- 010001,若选择 $l = 3$,$r = 5$;
- 010111,若选择 $l = 4$,$r = 6$;
- 011111,若选择 $l = 2$,$r = 6$;
- 011101,若选择 $l = 2$,$r = 4$。
你需要判断,是否可以通过若干次上述操作,使得两个字符串变得完全相同。
输入格式
第一行包含一个整数 $t$($1 \le t \le 2000$),表示测试用例的数量。
每个测试用例包含两行:
- 第一行是字符串 $a$($2 \le |a| \le 5000$),仅包含字符 $0$ 和 $1$。
- 第二行是字符串 $b$($2 \le |b| \le 5000$),仅包含字符 $0$ 和 $1$。
输入的额外约束:
- 每个测试用例中,$|a| = |b|$(两个字符串长度相等);
- 每个测试用例中,两个字符串都以 $0$ 开头,以 $1$ 结尾;
- 所有测试用例中,所有字符串 $a$ 的总长度不超过 $5000$。
输出格式
对于每个测试用例,如果可以通过若干次操作使得两个字符串相等,输出 YES;否则输出 NO。你可以用任意大小写输出答案。
说明/提示
在第一个测试用例中,可以进行如下操作:
1. 选择字符串 $a$,$l = 2$,$r = 4$;操作后,$a$ 变为 01110001,$b$ 变为 01110101;
2. 选择字符串 $b$,$l = 5$,$r = 7$;操作后,$a$ 变为 01110001,$b$ 变为 01110001。
在第二个测试用例中,两个字符串已经相等。
在第三个测试用例中,可以进行如下操作:
1. 选择字符串 $a$,$l = 4$,$r = 6$;操作后,$a$ 变为 000111,$b$ 变为 010111;
2. 选择字符串 $b$,$l = 1$,$r = 3$;操作后,$a$ 变为 000111,$b$ 变为 000111。
在第四和第五个测试用例中,不可能使两个字符串相等。
由 ChatGPT 4.1 翻译