题目背景
来源:https://www.gitlink.org.cn/thusaa/thuwc2018 。
2018 清华大学信息学冬季体验营(THUWC 2018)D1T3。2s,0.5G \texttt{2s,0.5G} 2s,0.5G 。
我希望你明白,优秀的出题人是懒得写题目背景的。但是优秀的题目也可能需要让选手了解一些基本定义, 例如以下这些内容, 而熟练的算法竞赛选手几乎可以无视。
对于一个字符串 S S S , 我们定义 ∣ S ∣ \left|S\right| ∣ S ∣ 表示 S S S 的长度。接着,我们定义 S i S_i S i 表示 S S S 中第 i i i 个字符,S L , R S_{L,R} S L , R 表示由 S S S 中从左往右数,第 L L L 个字符到第 R R R 个字符依次连接形成的字符串。特别的,如果 L > R L>R L > R ,或者 L ∉ [ 1 , ∣ S ∣ ] L \notin \left[1,\left|S\right|\right] L ∈ / [ 1 , ∣ S ∣ ] ,或者R ∉ [ 1 , ∣ S ∣ ] R \notin \left[1,\left|S\right|\right] R ∈ / [ 1 , ∣ S ∣ ] ,则我们可以认为 S L , R S_{L,R} S L , R 为空串。
我们再定义两个字符串 A A A 和 B B B 的加法, A + B A+B A + B 为将 B B B 字符串整体连接在 A A A 的最后一个字符后面得到的大字符串。
例如,我们可以认为 aaaa
+ + + bbbb
= = = aaaabbbb
。
我们不难发现,上述定义的加法满足结合律,但不满足交换律。
最后,我希望你还能明白,字典序是什么。
为了让你明白字典序是什么,你还需要明白前缀是什么。我们说一个字符串 A A A 是另一个字符串 B B B 的前缀,当且仅当存在一个整数 l e n len l e n ,使得 A A A 与 B 1 , l e n B_{1,len} B 1 , l e n 是完全相同的字符串。
对于两个不同的字符串 A A A 和 B B B ,如果 A A A 是 B B B 的一个前缀,则我们认为在字典序下, A < B A < B A < B ; 如果 B B B 是 A A A 的前缀,则我们认为在字典序下,B < A B < A B < A 。 否则,我们总能找到一个最小的 i i i , 使得 A i ≠ B i A_i \neq B_i A i = B i , 如果 A i < B i A_i < B_i A i < B i , 则我们认为在字典序下,A < B A < B A < B ,否则 B > A B > A B > A 。
题目描述
现在给出一个长度为 n n n 的字符串 A A A 。 在此基础上,我会进行 Q Q Q 次询问。
对于第 i i i (1 ≤ i ≤ Q 1 \leq i \leq Q 1 ≤ i ≤ Q )次的询问,我们会给出一个非空字符串 B ( i ) B^{(i)} B ( i ) , 并希望你找出一个最小的 j j j (0 ≤ j ≤ n 0 \leq j \leq n 0 ≤ j ≤ n ), 使得 A 1 , j + B ( i ) + A j + 1 , n A_{1,j} + B^{(i)} + A_{j+1,n} A 1 , j + B ( i ) + A j + 1 , n 的字典序最小。 对于每个询问,你只需要输出你找到的这个 j j j 即可。
输入格式
从标准输入读入数据。
第一行有两个用空格隔开的整数 n , Q n, Q n , Q , 分别代表字符串 A A A 的长度,以及询问次数。
第二行给出一个长度为 n n n 的字符串,表示字符串 A A A 。
第三行到第 Q + 2 Q+2 Q + 2 行, 每行会给出一个非空字符串, 第 i i i 行所给出的字符串表示 B ( i − 2 ) B^{(i-2)} B ( i − 2 ) 。
输出格式
输出到标准输出。
对于每个询问,请输出一行一个整数表示你所找到的最小的 j j j (0 ≤ j ≤ n 0 \leq j \leq n 0 ≤ j ≤ n )。
提示
子任务
测试点编号
n = n= n =
∑ ∣ B ( i ) ∣ ≤ \sum \left\lvert B^{(i)}\right\rvert\le ∑ B ( i ) ≤
Q ≤ Q\le Q ≤
其他约定
1 ∼ 3 1\sim 3 1 ∼ 3
100 100 100
无
4 ∼ 8 4\sim 8 4 ∼ 8
10 3 10^3 1 0 3
9 ∼ 10 9\sim 10 9 ∼ 10
10 6 10^6 1 0 6
5 × 10 5 5\times 10^5 5 × 1 0 5
∣ B ( i ) ∣ = 1 \lvert B^{(i)}\rvert=1 ∣ B ( i ) ∣ = 1
11 ∼ 14 11\sim 14 11 ∼ 14
3 × 10 5 3\times 10^5 3 × 1 0 5
5 × 10 5 5\times 10^5 5 × 1 0 5
3 × 10 5 3\times 10^5 3 × 1 0 5
无
15 ∼ 20 15\sim 20 15 ∼ 20
10 6 10^6 1 0 6
5 × 10 5 5\times 10^5 5 × 1 0 5
对于所有测试数据,1 ≤ n ≤ 10 6 1 \leq n \leq 10^6 1 ≤ n ≤ 1 0 6 ,1 ≤ Q ≤ 5 × 10 5 1 \leq Q \leq 5 \times 10^5 1 ≤ Q ≤ 5 × 1 0 5 ,1 ≤ ∑ i = 1 Q ∣ B ( i ) ∣ ≤ 10 6 1 \leq \sum \limits _{i=1}^{Q} \left|B^{(i)}\right| \leq 10^6 1 ≤ i = 1 ∑ Q B ( i ) ≤ 1 0 6 ,输入的字符串全部由数字 组成。
此外,我们保证,对于所有测试数据, ∑ i = 1 Q ∣ B ( i ) ∣ \sum \limits _{i=1}^{Q} \left|B^{(i)}\right| i = 1 ∑ Q B ( i ) 不会小于其在该测试点对应上界的 1 10 \frac{1}{10} 10 1 。