CF1237H.Balanced Reversals
NOI/NOI+/CTSC
通过率:0%
时间限制:2.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You have two strings a and b of equal even length n consisting of characters 0 and 1.
We're in the endgame now. To finally make the universe perfectly balanced, you need to make strings a and b equal.
In one step, you can choose any prefix of a of even length and reverse it. Formally, if a=a1a2…an, you can choose a positive even integer p≤n and set a to apap−1…a1ap+1ap+2…an.
Find a way to make a equal to b using at most n+1 reversals of the above kind, or determine that such a way doesn't exist. The number of reversals doesn't have to be minimized.
你有两个长度均为偶数 n 的字符串 a 和 b,它们仅由字符 0 和 1 构成。
现在我们已进入终局阶段。为了最终使宇宙达到完美平衡,你需要让字符串 a 和 b 相等。
在一次操作中,你可以选择 a 的任意一个长度为偶数的前缀并将其翻转。形式化地说,若 a=a1a2…an,则你可以选择一个满足 p≤n 的正偶数 p,并将 a 修改为 apap−1…a1ap+1ap+2…an。
请找出一种方法,在至多 n+1 次上述翻转操作内使 a 等于 b;若不存在这样的方法,则判定其不可能。操作次数无需最小化。
输入格式
The first line contains a single integer t (1≤t≤2000), denoting the number of test cases.
Each test case consists of two lines. The first line contains a string a of length n, and the second line contains a string b of the same length (2≤n≤4000; nmod2=0). Both strings consist of characters 0 and 1.
The sum of n over all t test cases doesn't exceed 4000.
第一行包含一个整数 t(1≤t≤2000),表示测试用例的数量。
每个测试用例包含两行。第一行包含一个长度为 n 的字符串 a,第二行包含一个长度同样为 n 的字符串 b(2≤n≤4000;且 nmod2=0)。两个字符串均由字符 0 和 1 组成。
所有 t 个测试用例的 n 值之和不超过 4000。
输出格式
For each test case, if it's impossible to make a equal to b in at most n+1 reversals, output a single integer −1.
Otherwise, output an integer k (0≤k≤n+1), denoting the number of reversals in your sequence of steps, followed by k even integers p1,p2,…,pk (2≤pi≤n; pimod2=0), denoting the lengths of prefixes of a to be reversed, in chronological order.
Note that k doesn't have to be minimized. If there are many solutions, output any of them.
对于每个测试用例,如果无法在至多 n+1 次翻转操作内使 a 等于 b,则输出单个整数 −1。
否则,输出一个整数 k(0≤k≤n+1),表示你所构造的操作序列中翻转操作的次数;随后输出 k 个偶数 p1,p2,…,pk(满足 2≤pi≤n 且 pimod2=0),表示按时间顺序依次对数组 a 的长度为 p1,p2,…,pk 的前缀进行翻转。
注意:k 不必最小化。若存在多种解法,输出任意一种即可。
输入输出样例
输入#1
4 0100011011 1101011000 10101010 10101010 0011 1001 100011 110010
输出#1
3 6 4 10 0 -1 7 2 6 2 6 2 2 6
说明/提示
In the first test case, string a changes as follows:
- after the first reversal: 1000101011;
- after the second reversal: 0001101011;
- after the third reversal: 1101011000.
在第一个测试用例中,字符串 a 的变化过程如下:
- 第一次翻转后:1000101011;
- 第二次翻转后:0001101011;
- 第三次翻转后:1101011000。
输入解题思路,AI测评打分。不知道怎么写?