A93084.「联合省选 2025」封印
NOI/NOI+/CTSC
省选
通过率:0%
时间限制:4.00s
内存限制:512MB
题目描述
在一次探险中,小 H 发现了一个古老的封印。封印的本体是一个长度为 n 的序列 A=[a1,a2,…,an]。初始,每个元素都是 1 至 m 间的正整数。
设 ∣A∣ 表示序列 A 的长度,小 H 可以对序列进行以下修改:
- 选择序列 A 的某个严格前缀最大值元素 as,即选择 1≤s≤∣A∣ 满足 ∀1≤j<s,as>aj,特别地,a1 总是序列 A 的严格前缀最大值;
- 若 as=1,将 (as−1) 插入序列 A 的尾端;
- 删去序列 A 的前 s 个元素。
考虑如下例子:在 A=[1,3,2,3,4] 时,
- 小 H 可以选择 s=1,此时修改后的序列变为 [3,2,3,4];
- 小 H 可以选择 s=2,此时修改后的序列变为 [2,3,4,2];
- 小 H 不能选择 s=4,因为 a2=a4=3,这意味着 a4 并非严格前缀最大值。
小 H 可以进行任意多次修改操作,也可以不进行任何修改。为了解开封印,小 H 想知道:通过以上修改操作,他可以得到多少种不同的非空序列。
认为两个序列 A=[a1,…,an] 和 B=[b1,…,bm] 不同,当且仅当 n=m 或 ∃1≤i≤min{n,m},ai=bi。
由于答案可能很大,你只需告诉小 H 答案对 998244353 取模后的结果。
输入格式
从文件 seal.in 中读入数据。
本题有多组测试数据。输入的第一行两个整数 c,T,分别表示测试点编号和测试数据组数,接下来输入每组测试数据。样例满足 c=0。
对于每组测试数据,第一行两个整数 n,m,分别表示序列长度与值域,第二行 n 个整数 a1,a2,…,an,描述序列 A。
输出格式
输出到文件 seal.out 中。
对于每组测试数据输出一行一个整数,表示通过修改操作可以得到的非空序列个数,对 998244353 取模。
输入输出样例
输入#1
0 4 3 2 1 2 1 4 3 3 1 2 1 5 4 1 3 2 3 4 7 5 4 4 5 2 3 3 1
输出#1
4 7 20 59
输入#2
0 2 11 10 8 8 8 9 9 8 8 9 9 9 8 12 2500 1529 1470 1361 1416 1492 1503 1641 1868 1829 1959 2052 2105
输出#2
694 4961744