luogu#P16328. 夜曲

    ID: 16169 远端评测题 500ms 512MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>二分洛谷原创O2优化洛谷月赛双指针 two-pointer

夜曲

背景

在旅程的尽头,那些本不属于我们的,已物归原主。

题目描述

给定长度为 nn 的两个字符串 s,ts, t,下标从 11 开始。

一次操作可以自由选择一个长度为 nn、值域为 [1,n][1, n]不降整数序列 pp,满足 pii1|p_i-i|\le 1。随后同时令所有 sispis_i\gets s_{p_i}

求能把 ss 变为 tt 的最小操作次数,若无解输出 1-1

输入格式

本题包含多组测试数据。

输入的第一行包含一个正整数 TT,表示测试数据组数。

接下来依次输入每组测试数据,对于每组测试数据,第一行输入字符串 ss,第二行输入字符串 tt

输出格式

对于每组测试数据,输出一行一个整数,表示答案。

11
aabbccc
abbbbbc
abbac
baabc
abcbcab
abbabbb
ababbbac
abaaabcc
aab
baa
ababaabababbb
baaabaababbba
abrcadabra
aaaabbbraa
aabababababababbababaab
abababaaabababababbabbb
azusa
aaaaa
anotheruniversity
inneroceanfantasy
breakplus
bbbbbpppp
2
-1
2
2
-1
3
3
1
2
-1
4

提示

样例解释

对于样例中第一组测试数据,我们可以通过如下方式使 ss 变成 tt

$$\texttt{aabbccc}\to\texttt{abbbbcc}\to\texttt{abbbbbc}$$

两次操作的 pp 分别为 [1,3,4,4,4,5,6][1,3,4,4,4,5,6][1,2,3,4,5,5,7][1,2,3,4,5,5,7]

不存在方式使得可以通过一次操作将 ss 变为 tt,故答案为 22

数据范围

本题开启捆绑测试。

mm 表示字符集大小,即字符串中仅会出现前 mm 个小写字母。

::cute-table | Subtask\text{Subtask} | n,nn,\sum n\le | mm\le | 特殊性质 |Score\text{Score} | | :-----------: | :-----------: | :-----------: | :---------: | :----------: | |11 | 2020| 22 | A | 1515 | |22 | 5×1035\times 10^3 | ^ | 无 | 3030 | |33 | 10610^6| 2626 | B | 2525 | |44 | ^| ^ | 无 | 3030 |

特殊性质 A:保证 sisi+1s_i\le s_{i+1}titi+1t_i\le t_{i+1}

特殊性质 B:保证 tt 仅包含字符 a

对于所有数据,保证 1T5×1031\le T \le 5\times 10^31n,n1061\le n,\sum n\le 10^6,字符串仅包含小写字母,s=t|s|=|t|