CF1530G What a Reversal

题目描述

- 给出两个 01 串 $a,b$,长度为 $n$。 - 一个合法的操作是翻转 $a$ 的一个恰好有 $k$ 个 1 的子串。目标是把 $a$ 串变成 $b$ 串。 - 求出满足题意的操作数 $m$ (应保证 $4n\ge m$)并构造一种操作,或者输出 $-1$ 表示无解。 - $n,k\le 2000$,测试组数 $t\le 2000$。

输入格式

第一行,一个整数 $t$($1 \leq t \leq 2000$)。 接下来有 $t$ 组数据,每一组数据的第一行输入 $n,k$($1 \leq n \leq 2000,0 \leq k \leq n$)。接下来两行输入字符串 $a$ 和 $b$。保证 $\sum n \leq 2000$。

输出格式

对于每一组数据,输出你的操作次数 $m$,接下来 $m$ 行输出 $l$ 和 $r$,表示把字符串 $a$ 的第 $l$ 位至第 $r$ 位的子串翻转,如果 $m > 4n$,就输出 $-1$。

说明/提示

在第一组数据中,字符串 $a$ 经过第一次反转后,$a=011010$,第二次反转后,$a=010110$,第三次反转后,$a=010101$。 #### 翻译人:[imagination](https://www.luogu.com.cn/user/110009)