3639: 语言(第四轮01)

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

牛妹正在学习一种新的语言,在这种语言里,单词只有形容词(A),名词(N)和动 (V)三种词性。但是一个单词可以对应多种词性。一个名词性词组(NP)可以由  一个名词(N),或者一个形容词修饰一个子名词性词组(A+NP1),或者两个子名

词性词组(NP1+NP2)组成。即

NP : : =  N   ∣  A + NP1   ∣  NP1  + NP2

 

一个句子(S)必须由一个名词性词组(NP1)加一个动词(V)再加一个名词性词组

(NP2)组成,即

S: : = NP1  + V + NP2

牛妹用这个语言写下一个单词的序列,现在你想知道这个单词序列是否能通过 适当安排序列里每个单词的词性使之成为一个句子(不同位置的相同的单词也 可以安排不同的词性)。

为了简单起见,她把每个单词编码对应为一个小写拉丁字母,不同的单词对应不 同的字母(这里我们假设序列里面不同的单词的总数不超过 26 个)。每个单词用 1(001)到7(111)来表示这个单词的词性。数字的二进制第 1 位为 1 表示是 A(形 容词), 否则表示不是 A;第 2 位为 1 表示是 N(名词), 否则表示不是 N;第 3 位为 1 表示是 V(动词),否则表示不是 V。


输入

第一行T,代表测试样例的个数。

对于每个测试样例, 一行, 26 个正整数 wa, wb, . . . , wz,表示每个单词的词性。 接下来一行, 一个字符串S,表示单词序列,保证S中只包含小写字母。

输出

对于每组样例,如果能构成一个句子,输出“Yes”;否则输出“No”。

样例输入 复制

1
7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
bcaa

样例输出 复制

Yes

提示

【样例 1 输入】

1

7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

bcaa

【样例 1 输出】

Yes

【样例 1 说明】

首先 a 可以是 A 或 N 或 V; b 只能是 A; c 只能是 N。

b 是 A, c 是 N, bc 构成 NP;前面一个 a  V;后面一个 a 是 N,单独构成 NP,符号 NP+V+NP 的结构,因此可以是一个句子。

【样例 2 输入】

1

7 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 

abca

【样例 2 输出】

No

【样例 2 说明】

可以验证,不管怎么给单词安排词性,都无法构成 NP+V+NP 的结构,所以不可 能是一个句子。

【数据范围】

对于 30%数据,满足  1 ≤∣ S  ∣≤ 1000

对于 100%数据,满足 T = 10, 1 ≤∣ S  ∣≤  100000, 1 ≤ wX  ≤ 7, X ∈ {a, b, . . . , Z}。


来源/分类