A92147.「2021 营员交流」数串
省选/NOI-
通过率:0%
时间限制:1.00s
内存限制:512MB
题目描述
本题包含三个问题:
- 问题 0:给定一个长度为 n 的序列以及它的后缀数组 p,求这个序列中有多少个不同的数。
- 问题 1:给定一个长度为 n 的排列 p,对于所有满足后缀数组为 p 的长度为 n 的序列,求不同的数的数量的最小值。
- 问题 2:给定一个长度为 n 的残缺的排列 p~ (有 k 个位置未知),对于所有 k! 种完整的排列,求问题 1 的答案之和。
在不同的测试点中,你将可能需要回答不同的问题。我们将用 op 来指代你需要回答的问题编号 (对应上述 0,1,2)。
在问题 2 中,由于答案可能很大,因此你只需要输出答案对 998244353 取模的结果即可。
输入格式
第一行包含两个非负整数 n,op,分别表示鼠的数量和子问题的类型。
如果 op=0,则第二行包含 n 个正整数 a1,a2,…,an,表示每只鼠的体型大小;第三行包含 n 个正整数 p1,p2,⋯,pn,表示小 S 得到的排列。
如果 op=1,则第二行包含 n 个正整数 p1,p2,…,pn,表示小 S 得到的排列。
如果 op=2,则第二行包含 n 个非负整数 p~1,p~2,…,p~n,表示小 S 的残缺的排列。p~i=0 表示这一个值被鼠 "咬掉" 的,否则 p~i 表示排列中第 i 位的值。
每行中的两个整数之间均用一个空格隔开,鼠的编号是从 1 开始的。
输出格式
输出一行一个整数,表示对应问题的答案对 998244353 取模的结果。
输入输出样例
输入#1
3 0 10 20 30 1 2 3
输出#1
3
输入#2
3 1 1 2 3
输出#2
2
输入#3
3 2 0 0 3
输出#3
5
说明/提示
对于所有的测试点,均满足 1≤n≤5×105;1≤ai≤109;1≤pi≤n;0≤p~i≤n,当 op=2 时存在至少一个 i 使得 p~i=0。
| 问题类型 (op=) | 测试点编号 | n | 其它性质 |
|---|---|---|---|
| 0 | 1 | ≤10 | 无 |
| 0 | 2 | ≤5×105 | 无 |
| 0 | 3 | ≤5×105 | 无 |
| 1 | 4 | =3 | 无 |
| 1 | 5 | =5 | 无 |
| 1 | 6 | ≤10 | 无 |
| 1 | 7 | ≤500 | 无 |
| 1 | 8 | ≤5000 | 无 |
| 1 | 9 | ≤5000 | 无 |
| 1 | 10 | ≤50000 | 无 |
| 1 | 11 | ≤50000 | 无 |
| 1 | 12 | ≤5×105 | pi=i |
| 1 | 13 | ≤5×105 | 无 |
| 1 | 14 | ≤5×105 | 无 |
| 2 | 15 | =3 | 无 |
| 2 | 16 | =5 | 无 |
| 2 | 17 | ≤10 | 无 |
| 2 | 18 | ≤500 | 满足 p~i=0 的 i 不超过 5 个 |
| 2 | 19 | ≤5000 | 无 |
| 2 | 20 | ≤5000 | 满足 p~i=0 的 i 不超过 5 个 |
| 2 | 21 | ≤50000 | 无 |
| 2 | 22 | ≤50000 | 所有 p~i=0 |
| 2 | 23 | ≤5×105 | 存在整数 t (1≤t<n),满足 p~i={i0i≤ti>t |
| 2 | 24 | ≤5×105 | 存在整数 t (1≤t<n),满足 p~i=0 当且仅当 i>t |
| 2 | 25 | ≤5×105 | 无 |