B. pspspsps
单次测试时间限制:1 秒
内存限制:256 兆字节
猫咪会被 pspspsps 吸引,但身为威严巨龙的埃维里尔,只对有着特殊严格要求的 pspspsps 感兴趣……
给定长度为 n 的字符串 s=s1s2…sn,字符仅包含 p、s 和 .(点)。判断是否存在一个长度为 n 的排列∗ p,满足对于所有整数 i(1≤i≤n):
- 若 si=p,则 [p1,p2,…,pi] 构成一个长度为 i 的排列;
- 若 si=s,则 [pi,pi+1,…,pn] 构成一个长度为 n−i+1 的排列;
- 若 si=.,则无额外限制。
∗ 长度为 n 的排列是指由 1 到 n 的 n 个不同整数任意顺序组成的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是排列(数字 2 重复出现),[1,3,4] 也不是排列(n=3 但数组中包含 4)。
输入格式
每个测试文件包含多组测试数据。
第一行输入一个整数 t(1≤t≤104),表示测试用例的数量。
每组测试数据的格式如下:
第一行输入一个整数 n(1≤n≤500),表示字符串 s 的长度。
第二行输入一个长度为 n 的字符串 s,仅由字符 p、s、. 组成。
保证所有测试用例的 n 之和不超过 5000。
输出格式
对于每组测试数据,输出 YES 或 NO。如果存在满足条件的排列则输出 YES,否则输出 NO。
你可以以任意大小写形式输出答案。例如,yEs、yes、Yes 和 YES 都会被判定为正确答案。
样例输入
9
4
s.sp
6
pss..s
5
ppppp
2
sp
4
.sp.
8
psss....
1
.
8
pspspsps
20
....................
样例输出
YES
NO
YES
YES
NO
NO
YES
NO
YES
样例说明
在第一个测试用例中,满足条件的一个排列是 p=[3,4,1,2]。限制条件如下:
- s1=s:[p1,p2,p3,p4]=[3,4,1,2] 构成排列;
- s2=.:无额外限制;
- s3=s:[p3,p4]=[1,2] 构成排列;
- s4=p:[p1,p2,p3,p4]=[3,4,1,2] 构成排列。
在第二个测试用例中,可以证明不存在满足所有约束的排列。
在第三个测试用例中,满足条件的一个排列是 p=[1,2,3,4,5]。