luogu#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} 为空串。

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

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

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

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

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

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

题目描述

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

对于第 ii1iQ1 \leq i \leq Q)次的询问,我们会给出一个非空字符串 B(i)B^{(i)}, 并希望你找出一个最小的 jj0jn0 \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(i2)B^{(i-2)}

输出格式

输出到标准输出。

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

6 2
000001
00
01
0
5

提示

子任务

测试点编号 n=n= B(i)\sum \left\lvert B^{(i)}\right\rvert\le QQ\le 其他约定
131\sim 3 100100
484\sim 8 10310^3
9109\sim 10 10610^6 5×1055\times 10^5 B(i)=1\lvert B^{(i)}\rvert=1
111411\sim 14 3×1053\times 10^5 5×1055\times 10^5 3×1053\times 10^5
152015\sim 20 10610^6 5×1055\times 10^5

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

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