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 自动生成**