CF1736D Equal Binary Subsequences
题目描述
给你一个长为 $2n$ 的01串 $s$ ,你需要将其分成两个相等的子序列。
在此之前你需要执行以下操作一次:
- 选一个 $s$ 的子序列(可能为空),然后将其向右循环移位一位。
具体来说,你可以选择一个下标序列 $b_1,b_2,\dots,b_m$ 满足 $1\le b_1
输入格式
每一个测试点有多个测试数据。第一行一个正整数 $t$ 表示测试数据组数。对于每组数据:
第一行一个正整数 $n$ ,表示01串 $s$ 的长度为 $2n$ 。
第二行一个长为 $2n$ 的01串 $s$ 。
输出格式
对于每组数据:
如果无解,输出一行 $-1$ 。
否则:
- 第一行输出一个整数 $m$ $(0\le m\le 2n)$ ,接着升序输出 $m$ 个下标 $b_1,b_2,\dots,b_m$ 。
- 第二行升序输出 $n$ 个下标 $p_1,p_2,\dots,p_n$ (见Hint) 。
如果有多解,输出任意一个。
$s$ 的下标从1开始。
#### 输入输出样例
##### 样例输入
```
4
2
1010
3
100010
2
1111
2
1110
```
##### 样例输出
```
0
1 2
2 3 5
1 2 5
3 2 3 4
1 4
-1
```
##### 样例解释
在第二个测试数据中,$b[]=\{3,5\}$ 。初始时 $s_3=0,s_5=1$ 。进行操作时,我们同时令 $s_3=1,s_5=0$ 。然后 $s$ 变成了 $101000$ 。现在我们选择 $p[]=\{1,2,5\}$ ,那么 $s^p=100$ ;自然 $q[]=\{3,4,6\}$ ,于是 $s^q=100$ 。$s^p=s^q$ 。
说明/提示
$1\le t\le 10^5,1\le n\le 10^5$ 。
保证同一测试点中所有数据的 $n$ 的和不超过 $10^5$ 。