bzoj#P4416. [SHOI2013] 阶乘字符串

[SHOI2013] 阶乘字符串

题目背景

(本题卡常数注意)

题目描述

给定一个由前 nn 个小写字母组成的串 SS。串 SS 是阶乘字符串当且仅当前 nn 个小写字母的全排列(共 n!n! 种)都作为的子序列(可以不连续)出现。

由这个定义出发,可以得到一个简单的枚举法去验证,但是它实在太慢了。所以现在请你设计一个算法,在 11 秒内判断出给定的串是否是阶乘字符串。

输入格式

输入第 11 行一个整数 TT,表示这个文件中会有 TT 组数据。

接下来分 TT 个块,每块 22 行:

  • 11 行一个正整数 nn,表示 SS 由前 nn 个小写字母组成。
  • 22 行一个字符串 ss

输出格式

对于每组数据,分别输出一行。每行是 YES 或者 NO,表示该数据对应的串 SS 是否是阶乘字符串。

2
2
bbaa
2
aba
NO
YES

提示

第一组数据中,ab 这个串没有作为子序列出现。

测试点编号 N=N= T=T= S\lvert S \rvert \le
11 33 44 1010
22 55 55 350350
33 2020 400400
44 77 300300
55 2020 450450
66
77
88 2626
99
1010