#B3950. [语言月赛 202403] szmgo

[语言月赛 202403] szmgo

题目背景

本题请参考文字题解。

shinzanmono 想要学习 szm 语,但是 szm 语太难了。

题目描述

现代 szm 语采用罗马字表示,其划分音节的规则如下:

  • 规定元音是字符 aeiou 之一。
  • 一般地,一个音节仅包含一个元音,并且以元音结尾。
  • 特别地,当且仅当 n 后第一个字符不是元音时,n 单独作一个音节。
  • 一个音节至多包含 33 个字符。

举个例子,shinzanmono 的音节依次为 shi n za n mo nonaku 的音节依次为 na ku

如果一个字符串是空串或者不能按照以上规则划分,则这个字符串不合法。题目描述中给出的字符串和测试数据中输入的字符串全部合法,你无需进行合法性检验。

将字符串 SSkk 个音节依次表示为 S1SkS'_1 \sim S'_k,将另一个字符串 TTmm 个音节依次表示为 T1TmT'_1 \sim T'_m

如果存在一个正整数 pp,满足 p+m1kp+m-1 \leq k 且对于从 ppp+m1p+m-1 的每个正整数 ii 都有 Si=Tip+1S'_i=T'_{i - p + 1},那么称 SS「包含」TT

在 szm 语中有一些习语,一种习语对应有一些固定的字符串。如果一个字符串「包含」且仅「包含」一种习语的一个固定子串,那么这个字符串是这种习语,否则这个字符串不是这种习语。

例如,当一种习语对应的子串只有 ao 时,字符串 nao 不是这种习语,因为 nao 的音节依次为 na o,而 ao 的音节依次为 a o。另一个例子是,如果敬语对应的子串为 desusuma,那么 kyuusaidesu 是敬语,而 kyuusaidesumakyuusaidema 不是敬语。

某种习语对应 nn 个长度不超过 1010 的不同子串,给定 qq 个字符串,判断每个字符串是否是这种习语。

输入格式

第一行输入两个整数 n,qn,q,含义如题面所述。
接下来 nn 行,第 ii 行输入一个字符串 cic_i,表示习语对应的第 ii 个子串。
接下来 qq 行,第 ii 行输入一个字符串 sis_i,询问字符串 sis_i 是否是给定习语。

输出格式

输出 qq 行,如果字符串 sis_i 是给定习语,在第 ii 行输出 Yes, Commander;否则在第 ii 行输出 No, Commander

2 4
desu
suma
kyuusaidesu
kyuusaidesuma
kyuusaidema
desudesu

Yes, Commander
No, Commander
No, Commander
Yes, Commander

提示

数据规模与约定

对于 30%30\% 的数据,保证习语对应的所有字符串都没有由单个元音组成的音节。
对于另外 30%30\% 的数据,保证习语对应的所有字符串均只包含一个音节。
对于 100%100\% 的数据,1n101 \leq n \leq 101q1051 \leq q \leq 10^5,习语对应的每个子串的长度不超过 1010 且两两不同,询问的 qq 个字符串的字符个数之和不超过 5×1055 \times 10^5,输入的所有字符串均只包含小写字符。