#P11150. [THUWC 2018] 字胡串

[THUWC 2018] 字胡串

背景

来源:https://www.gitlink.org.cn/thusaa/thuwc2018。

2018 清华大学信息学冬季体验营(THUWC 2018)D1T3。2s,0.5G\texttt{2s,0.5G}。


我希望你明白,优秀的出题人是懒得写题目背景的。但是优秀的题目也可能需要让选手了解一些基本定义, 例如以下这些内容, 而熟练的算法竞赛选手几乎可以无视。

对于一个字符串 SS, 我们定义 ∣S∣\left|S\right| 表示 SS 的长度。接着,我们定义 SiS_i 表示 SS 中第 ii 个字符,SL,RS_{L,R} 表示由 SS 中从左往右数,第 LL 个字符到第 RR 个字符依次连接形成的字符串。特别的,如果 L>RL>R,或者 L∉[1,∣S∣]L \notin \left[1,\left|S\right|\right],或者R∉[1,∣S∣]R \notin \left[1,\left|S\right|\right],则我们可以认为 SL,RS_{L,R} 为空串。

我们再定义两个字符串 AA 和 BB 的加法, A+BA+B 为将 BB 字符串整体连接在 AA 的最后一个字符后面得到的大字符串。

例如,我们可以认为 aaaa ++ bbbb == aaaabbbb。

我们不难发现,上述定义的加法满足结合律,但不满足交换律。

最后,我希望你还能明白,字典序是什么。

为了让你明白字典序是什么,你还需要明白前缀是什么。我们说一个字符串 AA 是另一个字符串 BB 的前缀,当且仅当存在一个整数 lenlen,使得 AA 与 B1,lenB_{1,len} 是完全相同的字符串。

对于两个不同的字符串 AA 和 BB,如果 AA 是 BB 的一个前缀,则我们认为在字典序下, A<BA < B; 如果 BB 是 AA 的前缀,则我们认为在字典序下,B<AB < A。 否则,我们总能找到一个最小的 ii, 使得 Ai≠BiA_i \neq B_i, 如果 Ai<BiA_i < B_i, 则我们认为在字典序下,A<BA < B,否则 B>AB > A。

题目描述

现在给出一个长度为 nn 的字符串 AA。 在此基础上,我会进行 QQ 次询问。

对于第 ii(1≤i≤Q1 \leq i \leq Q)次的询问,我们会给出一个非空字符串 B(i)B^{(i)}, 并希望你找出一个最小的 jj(0≤j≤n0 \leq j \leq n), 使得 A1,j+B(i)+Aj+1,nA_{1,j} + B^{(i)} + A_{j+1,n} 的字典序最小。 对于每个询问,你只需要输出你找到的这个 jj 即可。

输入格式

从标准输入读入数据。

第一行有两个用空格隔开的整数 n,Qn, Q, 分别代表字符串 AA 的长度,以及询问次数。

第二行给出一个长度为 nn 的字符串,表示字符串 AA。

第三行到第 Q+2Q+2 行, 每行会给出一个非空字符串, 第 ii 行所给出的字符串表示 B(i−2)B^{(i-2)}。

输出格式

输出到标准输出。

对于每个询问,请输出一行一个整数表示你所找到的最小的 jj(0≤j≤n0 \leq j \leq n)。

6 2
000001
00
01
0
5

提示

子任务

测试点编号 n=n= ∑∣B(i)∣≤\sum \left\lvert B^{(i)}\right\rvert\le Q≤Q\le 其他约定
1∼31\sim 3 100100 无
4∼84\sim 8 10310^3
9∼109\sim 10 10610^6 5×1055\times 10^5 ∣B(i)∣=1\lvert B^{(i)}\rvert=1
11∼1411\sim 14 3×1053\times 10^5 5×1055\times 10^5 3×1053\times 10^5 无
15∼2015\sim 20 10610^6 5×1055\times 10^5

对于所有测试数据,1≤n≤1061 \leq n \leq 10^6,1≤Q≤5×1051 \leq Q \leq 5 \times 10^5,$1 \leq \sum \limits _{i=1}^{Q} \left|B^{(i)}\right| \leq 10^6$,输入的字符串全部由数字组成。

此外,我们保证,对于所有测试数据, ∑i=1Q∣B(i)∣\sum \limits _{i=1}^{Q} \left|B^{(i)}\right| 不会小于其在该测试点对应上界的 110\frac{1}{10}。