luogu#B3950. [语言月赛 202403] szmgo
[语言月赛 202403] szmgo
题目背景
本题请参考文字题解。
shinzanmono 想要学习 szm 语,但是 szm 语太难了。
题目描述
现代 szm 语采用罗马字表示,其划分音节的规则如下:
- 规定元音是字符
a
、e
、i
、o
、u
之一。 - 一般地,一个音节仅包含一个元音,并且以元音结尾。
- 特别地,当且仅当
n
后第一个字符不是元音时,n
单独作一个音节。 - 一个音节至多包含 个字符。
举个例子,shinzanmono
的音节依次为 shi
n
za
n
mo
no
;naku
的音节依次为 na
ku
。
如果一个字符串是空串或者不能按照以上规则划分,则这个字符串不合法。题目描述中给出的字符串和测试数据中输入的字符串全部合法,你无需进行合法性检验。
将字符串 的 个音节依次表示为 ,将另一个字符串 的 个音节依次表示为 。
如果存在一个正整数 ,满足 且对于从 到 的每个正整数 都有 ,那么称 「包含」。
在 szm 语中有一些习语,一种习语对应有一些固定的字符串。如果一个字符串「包含」且仅「包含」一种习语的一个固定子串,那么这个字符串是这种习语,否则这个字符串不是这种习语。
例如,当一种习语对应的子串只有 ao
时,字符串 nao
不是这种习语,因为 nao
的音节依次为 na
o
,而 ao
的音节依次为 a
o
。另一个例子是,如果敬语对应的子串为 desu
和 suma
,那么 kyuusaidesu
是敬语,而 kyuusaidesuma
和 kyuusaidema
不是敬语。
某种习语对应 个长度不超过 的不同子串,给定 个字符串,判断每个字符串是否是这种习语。
输入格式
第一行输入两个整数 ,含义如题面所述。
接下来 行,第 行输入一个字符串 ,表示习语对应的第 个子串。
接下来 行,第 行输入一个字符串 ,询问字符串 是否是给定习语。
输出格式
输出 行,如果字符串 是给定习语,在第 行输出 Yes, Commander
;否则在第 行输出 No, Commander
。
2 4
desu
suma
kyuusaidesu
kyuusaidesuma
kyuusaidema
desudesu
Yes, Commander
No, Commander
No, Commander
Yes, Commander
提示
数据规模与约定
对于 的数据,保证习语对应的所有字符串都没有由单个元音组成的音节。
对于另外 的数据,保证习语对应的所有字符串均只包含一个音节。
对于 的数据,,,习语对应的每个子串的长度不超过 且两两不同,询问的 个字符串的字符个数之和不超过 ,输入的所有字符串均只包含小写字符。