SP10572 CHEATCON - Cheating on the contest

题目描述

天际自由数学、哲学与语言学学校将首次举办正则表达式竞赛(RegExCon)。竞赛规则是:参赛者两两对决,胜者前进,败者淘汰,直至产生唯一的冠军。在每场对决中,选手们都会拿到一份包含多个正则表达式的列表,并需要判定多个单词是否被每个正则表达式识别。作为该校的一员,你也参与了这次比赛,并希望能夺得胜利。为了确保获胜,你需要编写一个解决问题的程序,并让它在你家中的酷炫计算器上运行。作为一位精通变化系与幻术系的大法师,你可以用意念轻松操控你的机器,因此在比赛中可以利用你的程序。虽然比赛禁止使用魔法,但碰巧的是,冬堡学院正好在举办一个法师大会,所以你完全可以自如地使用魔法。 正则表达式用于描述一组特定的单词,其字母表在本题中限定为 {a, b}。 一个正则表达式 $R$ 是有效的,如果具备以下形式之一: 1. $R$ 是「a」或「b」; 2. $R$ 是「(P.S)」,其中 $P$ 和 $S$ 均为正则表达式; 3. $R$ 是「(P|S)」,其中 $P$ 和 $S$ 均为正则表达式; 4. $R$ 是「(P*)」,其中 $P$ 是正则表达式。 正则表达式可以套嵌入多层。「.」和「|」操作符没有三元操作,而「*」操作符没有二元操作。所有单词均以「(」开始,以「)」结束。 由正则表达式 $R$ 识别的单词集合 $L$ 的规则如下: 1. 如果 $R$ 是「(a)」,那么 $L = \{a\}$; 2. 如果 $R$ 是「(b)」,那么 $L = \{b\}$; 3. 如果 $R$ 是「(P.S)」,那么 $L$ 是所有通过 $P$ 识别的单词 $p$ 和通过 $S$ 识别的单词 $s$ 的连接; 4. 如果 $R$ 是「(P|S)」,那么 $L$ 是 $P$ 和 $S$ 识别的单词集合的并集; 5. 如果 $R$ 是「(P*)」,那么 $R$ 识别由 $P$ 识别的单词的 0 次或多次的连接。

输入格式

输入文件包含多个测试用例。每个测试用例的第一行是一个正则表达式(长度在 1 到 150 之间)。下一行包含一个整数 $P$($1 \le P \le 1000$),表示接下来有 $P$ 个问题。每个问题是询问特定的单词是否被给定的正则表达式识别。

输出格式

对于每个问题,如果答案是「是」,则输出 `Y`(不带引号);如果答案是「否」,则输出 `N`(不带引号)。在每个测试用例结束后打印一个空行。 ## 数据范围 - 正则表达式的长度在 1 到 150 之间。 - 每个测试用例中的问题数量在 1 到 1000 之间。 **本翻译由 AI 自动生成**