UOJ Logo Universal Online Judge

UOJ

#957. 【统一省选2025】封印

附件下载 统计

在一次探险中,小 H 发现了一个古老的封印。封印的本体是一个长度为 n 的序列 A=[a1,a2,,an]。初始,每个元素都是 1 至 m 间的正整数。

|A| 表示序列 A 的长度,小 H 可以对序列进行以下修改:

  1. 选择序列 A 的某个严格前缀最大值元素 as,即选择 1s|A| 满足 1j<s,as>aj,特别地,a1 总是序列 A 的严格前缀最大值;
  2. as1,将 (as1) 插入序列 A 的尾端;
  3. 删去序列 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] 不同,当且仅当 nm1imin{n,m}aibi

由于答案可能很大,你只需告诉小 H 答案对 998244353 取模后的结果。

输入格式

本题有多组测试数据。输入的第一行两个整数 c,T,分别表示测试点编号和测试数据组数,接下来输入每组测试数据。样例满足 c=0

对于每组测试数据,第一行两个整数 n,m,分别表示序列长度与值域,第二行 n 个整数 a1,a2,,an,描述序列 A

输出格式

对于每组测试数据输出一行一个整数,表示通过修改操作可以得到的非空序列个数,对 998244353 取模。

样例 1

input

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

output

4
7
20
59

explanation

该组样例共有 4 组测试数据。 - 对于第一组测试数据,可以通过修改得到的非空序列有 [1,2,1][2,1][1,1][1]。 - 对于第二组测试数据,可以通过修改操作得到的非空序列有 [3,1,2,1][1,2,1,2][2,1,2][1,2,1][2,1][1,1][1]

样例 2

input

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

output

694
4961744

【样例 3】

见选手目录下的 seal/seal3.inseal/seal3.ans

该组样例满足测试点 3 ~ 5 的限制。

【样例 4】

见选手目录下的 seal/seal4.inseal/seal4.ans

该组样例满足测试点 10 的限制。

【样例 5】

见选手目录下的 seal/seal5.inseal/seal5.ans

该组样例满足测试点 11 ~ 14 的限制。

【样例 6】

见选手目录下的 seal/seal6.inseal/seal6.ans

该组样例满足测试点 15 的限制。

【样例 7】

见选手目录下的 seal/seal7.inseal/seal7.ans

该组样例满足测试点 17 ~ 19 的限制。

【样例 8】

见选手目录下的 seal/seal8.inseal/seal8.ans

该组样例满足测试点 22 ~ 25 的限制。

子任务

对于所有测试点,

  • 1T10
  • 1n,m2500
  • 1in1aim
测试点编号 n m 特殊性质
1,2 10 10
35 18 70
6 18 70 A
7,8 18 70 AB
9 70 70 A
10 70 70 AB
1114 70 70
15 300 300 A
16 300 300 AB
1719 300 300
20 2500 2500 A
21 2500 2500 AB
2225 2500 2500
  • 特殊性质 A:1i<jn,aiaj
  • 特殊性质 B:1i<n,ai<ai+1

时间限制:4s

空间限制:512MB