A115476.回文区间翻转
提高+/省选-
官方
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
给定两个长度同为 n 的二进制串 s,t。
你可以对当前字符串 s 进行若干次操作。每次操作需要选择一段区间 [l,r](1≤l<r≤n),并满足当前子串 slsl+1…sr 是一个回文串。随后,把这段区间内的所有字符按位翻转:
0变成11变成0
你的目标是在不超过 2n 次操作内,把 s 变成 t。
若无法做到,输出 −1;否则输出任意一组合法操作。
输入格式
第一行一个整数 T,表示测试组数。
对于每组数据:
- 第一行一个整数 n;
- 第二行一个二进制串 s;
- 第三行一个二进制串 t。
输出格式
对每组数据:
- 若无解,输出一行
-1; - 否则先输出一行整数 k,表示操作次数;
- 接下来输出 k 行,每行两个整数 l,r,表示一次操作。
要求 0≤k≤2n,并且每次操作时所选子串都必须是当时的回文串。
输入输出样例
输入#1
3 5 01011 10000 7 1010101 0101010 4 0010 0010
输出#1
2 1 3 3 5 1 1 7 0
说明/提示
数据范围
- 1≤T≤5×103
- 4≤n≤100
- 所有测试组的 n2 之和不超过 5×105