A8524.相似排列
普及+/提高
官方
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
Yuilice 会给定一个由从 0 到 n−1 的整数组成的排列 a1,a2,…,an。你的任务是找出有多少个排列 b1,b2,…,bn 与排列 a 相似。
如果在所有区间 [l,r](1≤l≤r≤n) 中,如果可以找到以下条件,那么大小为 n 的两个排列 a 和 b 就可以被认为是 相似 排列:
MEX([al,al+1,…,ar])=MEX([bl,bl+1,…,br]),
其中整数集合 c1,c2,…,ck 的 MEX 定义为集合 c 中不出现的最小非负整数 x。
例如:MEX([1,2,3,4,5])=0 和 MEX([0,1,2,4,5])=3。
由于最后的结果可能过大,请将答案对 109+7 取模后输出。
注意:大小为 n 的排列是由 0 至 n−1 之间的 n 个不同整数按任意顺序排列而成的数组。
例如:
[2,0,1,4,3]可以被称之为是一个排列,但是[2,3,3]不可以,因为3出现了两次。
假若 n=3,那么 [1,2,3] 不是一个合法排列,因为数字 3 存在于数组当中。
输入格式
每个测试点包含多个测试用例。第一行输入包含一个整数 t (1≤t≤104) - 代表测试用例的数量。下面几行包含测试用例的描述。
每个测试用例的第一行都包含一个整数 n (1≤n≤105) 代表排列 a 的大小。
每个测试用例的第二行包含 n 个不同的整数 a1,a2,…,an (0≤ai<n) - 排列 a 的元素。
保证所有测试用例中 n 的总和不超过 105 。
输出格式
对于每个测试用例,打印一个整数,即与 排列 a 相似的 排列 的数量,请取模 109+7 后进行输出 。
输入输出样例
输入#1
5 5 4 0 3 2 1 4 3 2 1 0 1 0 7 1 2 3 4 0 5 6 10 0 9 1 8 2 7 3 6 4 5
输出#1
2 1 1 6 24
说明/提示
- 当a=[4,0,3,2,1] 时,与其相似的序列为[4,0,3,2,1]与[4,0,2,3,1]。
- 第二组样例与第三组样例相似序列都为他本身。