#aCybttg020402. 1480:玄武密码

1480:玄武密码

好的,我将题目中的数字和名称用 ...... 标出。


题目描述

玄武湖畔的进香河有一块富饶之地,人们发现了带有“玄武密码”的文字。
我们可以用一个长度为 NN 的母串表示台城城砖的摆放方向,字符集为 {E,S,W,N}\{E, S, W, N\}(分别代表东南西北)。
玄武密码由 MM 段文字描述,每段文字也是由 {E,S,W,N}\{E, S, W, N\} 组成的字符串。

对于每一段文字,需要求出它的前缀在母串上的最大匹配长度(即该文字的某个前缀出现在母串中作为子串的最长长度)。


输入格式

第一行两个整数 NNMM,分别表示母串长度和文字段数。
第二行一个长度为 NN 的字符串,表示母串。
接下来 MM 行,每行一个字符串,表示一段文字。

输出格式

输出 MM 行,每行一个整数,表示对应文字的前缀在母串中的最大匹配长度。


数据范围

  • 1N1071 \le N \le 10^7
  • 1M1051 \le M \le 10^5
  • 每段文字长度 100\le 100

输入样例

7 3
SNNSSNS
NNSS
NNN
WSEE

输出样例

4
2
0

样例解释

母串:SNNSSNSSNNSSNS

第一段文字 NNSSNNSS

前缀与母串匹配情况:

  • 前缀 NN:出现在母串位置 2,3,62,3,6,长度 11
  • 前缀 NNNN:出现在母串位置 222233 位置连续),长度 22
  • 前缀 NNSNNS:出现在母串位置 222,3,42,3,4 位置是 NNSNNS),长度 33
  • 前缀 NNSSNNSS:出现在母串位置 222,3,4,52,3,4,5 位置是 NNSSNNSS),长度 44
  • 再长就超出文字长度了,所以最大匹配长度 44

第二段文字 NNNNNN

前缀匹配:

  • NN:长度 11
  • NNNN:长度 22
  • NNNNNN:母串中没有连续三个 NN,最大长度 22

第三段文字 WSEEWSEE

母串中没有 WW,所以所有前缀都不匹配,最大长度 00


这样题目就完整了,所有数字和名称都用 ...... 标出。