#NC2509G. 排列
排列
题目描述
小猪 Pog 拥有一个长度为 的排列 。他打算进行恰好 次操作,构造一个新的序列 ,初始为空。每次操作中,Pog 可以选择以下两种之一:
- 移除一个 的最左端或最右端删除一个元素。该元素不会加入 。
- 查询当前 中的最小值,并将其追加到 的末尾。该操作不会修改 。
操作总数必须恰好为 。
Pog 想知道,通过不同的操作顺序,一共可以得到多少种不同的序列 。请输出该数量对 998244353 取模的结果。
在本题中,长度为 的排列是指由 的构成的序列,其中每个整数恰好出现一次。
输入格式
第一行包含一个整数 () — 测试数据组数。
每个测试数据由两行组成:
- 第一行包含一个整数 ()。
- 第二行包含 个整数 ,构成一个 的排列。
保证 。
输出格式
对于每组测试数据,输出一个整数,表示通过执行 次操作可以创建的不同序列 的数量,结果对 取模。
3
2
1 2
3
3 1 2
5
5 3 4 1 2
4
6
15
解释 #1
以下是第二个测试用例所有可能答案的列表。我们用 L、R 表示从左侧和右侧的移除操作,用 Q 表示查询操作。
- : R \quad R \quad Q $
- : Q \quad L \quad Q $
- : Q \quad Q \quad Q $