CF1237H.Balanced Reversals

NOI/NOI+/CTSC

通过率:0%

时间限制:2.00s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You have two strings aa and bb of equal even length nn consisting of characters 0 and 1.

We're in the endgame now. To finally make the universe perfectly balanced, you need to make strings aa and bb equal.

In one step, you can choose any prefix of aa of even length and reverse it. Formally, if a=a1a2…ana = a_1 a_2 \ldots a_n, you can choose a positive even integer p≤np \le n and set aa to apap−1…a1ap+1ap+2…ana_p a_{p-1} \ldots a_1 a_{p+1} a_{p+2} \ldots a_n.

Find a way to make aa equal to bb using at most n+1n + 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.

你有两个长度均为偶数 nn 的字符串 aa 和 bb,它们仅由字符 0 和 1 构成。

现在我们已进入终局阶段。为了最终使宇宙达到完美平衡,你需要让字符串 aa 和 bb 相等。

在一次操作中,你可以选择 aa 的任意一个长度为偶数的前缀并将其翻转。形式化地说,若 a=a1a2…ana = a_1 a_2 \ldots a_n,则你可以选择一个满足 p≤np \le n 的正偶数 pp,并将 aa 修改为 apap−1…a1ap+1ap+2…ana_p a_{p-1} \ldots a_1 a_{p+1} a_{p+2} \ldots a_n。

请找出一种方法,在至多 n+1n + 1 次上述翻转操作内使 aa 等于 bb;若不存在这样的方法,则判定其不可能。操作次数无需最小化。

输入格式

The first line contains a single integer tt (1≤t≤20001 \le t \le 2000), denoting the number of test cases.

Each test case consists of two lines. The first line contains a string aa of length nn, and the second line contains a string bb of the same length (2≤n≤40002 \le n \le 4000; n mod 2=0n \bmod 2 = 0). Both strings consist of characters 0 and 1.

The sum of nn over all tt test cases doesn't exceed 40004000.

第一行包含一个整数 tt(1≤t≤20001 \le t \le 2000),表示测试用例的数量。

每个测试用例包含两行。第一行包含一个长度为 nn 的字符串 aa,第二行包含一个长度同样为 nn 的字符串 bb(2≤n≤40002 \le n \le 4000;且 n mod 2=0n \bmod 2 = 0)。两个字符串均由字符 0 和 1 组成。

所有 tt 个测试用例的 nn 值之和不超过 40004000。

输出格式

For each test case, if it's impossible to make aa equal to bb in at most n+1n + 1 reversals, output a single integer −1-1.

Otherwise, output an integer kk (0≤k≤n+10 \le k \le n + 1), denoting the number of reversals in your sequence of steps, followed by kk even integers p1,p2,…,pkp_1, p_2, \ldots, p_k (2≤pi≤n2 \le p_i \le n; pi mod 2=0p_i \bmod 2 = 0), denoting the lengths of prefixes of aa to be reversed, in chronological order.

Note that kk doesn't have to be minimized. If there are many solutions, output any of them.

对于每个测试用例,如果无法在至多 n+1n + 1 次翻转操作内使 aa 等于 bb,则输出单个整数 −1-1。

否则,输出一个整数 kk(0≤k≤n+10 \le k \le n + 1),表示你所构造的操作序列中翻转操作的次数;随后输出 kk 个偶数 p1,p2,…,pkp_1, p_2, \ldots, p_k(满足 2≤pi≤n2 \le p_i \le n 且 pi mod 2=0p_i \bmod 2 = 0),表示按时间顺序依次对数组 aa 的长度为 p1,p2,…,pkp_1, p_2, \ldots, p_k 的前缀进行翻转。

注意:kk 不必最小化。若存在多种解法,输出任意一种即可。

输入输出样例

  • 输入#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 aa changes as follows:

  • after the first reversal: 1000101011;
  • after the second reversal: 0001101011;
  • after the third reversal: 1101011000.

在第一个测试用例中,字符串 aa 的变化过程如下:

  • 第一次翻转后:1000101011;
  • 第二次翻转后:0001101011;
  • 第三次翻转后:1101011000。

输入解题思路,AI测评打分。不知道怎么写?

首页