CF1504B.Flip the Bits
普及/提高-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
There is a binary string a of length n. In one operation, you can select any prefix of a with an equal number of 0 and 1 symbols. Then all symbols in the prefix are inverted: each 0 becomes 1 and each 1 becomes 0.
For example, suppose a=0111010000.
- In the first operation, we can select the prefix of length 8 since it has four 0's and four 1's: [01110100]00→[10001011]00.
- In the second operation, we can select the prefix of length 2 since it has one 0 and one 1: [10]00101100→[01]00101100.
- It is illegal to select the prefix of length 4 for the third operation, because it has three 0's and one 1.
Can you transform the string a into the string b using some finite number of operations (possibly, none)?
给定一个长度为 n 的二进制字符串 a。在一次操作中,你可以选择 a 的任意一个前缀,该前缀中 0 和 1 的个数必须相等;然后将该前缀中的所有符号翻转:每个 0 变为 1,每个 1 变为 0。
例如,设 a=0111010000:
- 在第一次操作中,我们可以选择长度为 8 的前缀,因为它包含四个 0 和四个 1:[01110100]00→[10001011]00。
- 在第二次操作中,我们可以选择长度为 2 的前缀,因为它包含一个 0 和一个 1:[10]00101100→[01]00101100。
- 第三次操作中选择长度为 4 的前缀是非法的,因为该前缀包含三个 0 和一个 1。
你能否通过有限次(可能为零次)上述操作,将字符串 a 变换为字符串 b?
输入格式
The first line contains a single integer t (1≤t≤104) — the number of test cases.
The first line of each test case contains a single integer n (1≤n≤3⋅105) — the length of the strings a and b.
The following two lines contain strings a and b of length n, consisting of symbols 0 and 1.
The sum of n across all test cases does not exceed 3⋅105.
第一行包含一个整数 t(1≤t≤104)—— 测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤3⋅105)—— 字符串 a 和 b 的长度。
接下来的两行分别包含长度为 n 的字符串 a 和 b,均由字符 0 和 1 组成。
所有测试用例的 n 之和不超过 3⋅105。
输出格式
For each test case, output "YES" if it is possible to transform a into b, or "NO" if it is impossible. You can print each letter in any case (upper or lower).
对于每个测试用例,如果可以将 a 变换为 b,则输出 "YES";否则输出 "NO"。你可以以任意大小写(大写或小写)输出每个字母。
输入输出样例
输入#1
5 10 0111010000 0100101100 4 0000 0000 3 001 000 12 010101010101 100110011010 6 000111 110100
输出#1
YES YES NO YES NO
说明/提示
The first test case is shown in the statement.
In the second test case, we transform a into b by using zero operations.
In the third test case, there is no legal operation, so it is impossible to transform a into b.
In the fourth test case, here is one such transformation:
- Select the length 2 prefix to get 100101010101.
- Select the length 12 prefix to get 011010101010.
- Select the length 8 prefix to get 100101011010.
- Select the length 4 prefix to get 011001011010.
- Select the length 6 prefix to get 100110011010.
In the fifth test case, the only legal operation is to transform a into 111000. From there, the only legal operation is to return to the string we started with, so we cannot transform a into b.
第一个测试用例已在题目描述中给出。
在第二个测试用例中,我们无需执行任何操作即可将 a 变换为 b。
在第三个测试用例中,不存在合法的操作,因此无法将 a 变换为 b。
在第四个测试用例中,存在如下一种变换方式:
- 选择长度为 2 的前缀,得到 100101010101;
- 选择长度为 12 的前缀,得到 011010101010;
- 选择长度为 8 的前缀,得到 100101011010;
- 选择长度为 4 的前缀,得到 011001011010;
- 选择长度为 6 的前缀,得到 100110011010。
在第五个测试用例中,唯一合法的操作是将 a 变换为 111000;此后,唯一合法的操作是变回初始字符串,因此无法将 a 变换为 b。
输入解题思路,AI测评打分。不知道怎么写?