不是烤串故事
题号:NC277160
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

\,\,\,\,\,\,\,\,\,小红有两个长度为 n 的字符串 st ,我们定义下标从 1 开始,现在你可以选取字符串 s 的前 i 个字符 s_1 s_2\cdots s_i,然后将这一部分反转后与剩余部分拼接,得到 s_i'
\,\,\,\,\,\,\,\,\,请你找到每一个翻转前缀 s_i' 与字符串 t\displaystyle \max_{i=1}^n{\rm\_len} \{{\rm lcp}(s_i',t) \} ,即长度最长的 {\rm lcp}(s_i',t) 。在这里,\rm lcp 代表最长公共前缀
\,\,\,\,\,\,\,\,\,好吧,这其实并不难,作为神秘的 \mathcal F 题,你同时需要输出满足上述条件的最小的 i 。

\,\,\,\,\,\,\,\,\,在本题中,反转即为将字符串绕中心字符前后反转,具体地说,设字符串为 s_1s_2\cdots s_{n-1} s_n ,反转后得到 s_n s_{n-1}\cdots s_2s_1

输入描述:

\,\,\,\,\,\,\,\,\,每个测试文件均包含多组测试数据。第一行输入一个整数 T\ (1\le T\le 100) 代表数据组数,每组测试数据描述如下:
\,\,\,\,\,\,\,\,\,第一行输入一个整数 n\left(1\leq n\leq 10^6\right) 代表字符串长度。
\,\,\,\,\,\,\,\,\,第二行输入一个长度为 n ,且仅由小写字母构成的字符串 s
\,\,\,\,\,\,\,\,\,第三行输入一个长度为 n ,且仅由小写字母构成的字符串 t

\,\,\,\,\,\,\,\,\,除此之外,保证所有的 n 之和不超过 10^6

输出描述:

\,\,\,\,\,\,\,\,\,对于每一组测试数据,在一行上输出两个整数,代表最长 \rm lcp 长度和在此条件下最小的 i 。
示例1

输入

复制
3
6
baabaa
aabbbb
3
abc
bac
2
ab
cd

输出

复制
4 3
3 2
0 1

说明

\,\,\,\,\,\,\,\,\,对于第一组测试数据,我们这样描述整个过程:
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\bullet\,选择前缀长度为 1 翻转 s_1'={\tt ,\operatorname{lcp}=0 ;
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\bullet\,选择前缀长度为 2 翻转 s_2'={\tt  \operatorname{lcp}=1 
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\bullet\,选择前缀长度为 3 翻转 s_3'={\tt \operatorname{lcp}=4 
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\bullet\,选择前缀长度为 4 翻转 s_4'= {\tt  \operatorname{lcp}=0 
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\bullet\,选择前缀长度为 5 翻转 s_5'={\tt \operatorname{lcp}=1 
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\bullet\,选择前缀长度为 6 翻转 s_6'={\tt \operatorname{lcp}=3 
\,\,\,\,\,\,\,\,\,所以最长的公共前缀为 4 ,与此同时最小的翻转下标为 3 。