#gSXYlydlt30x3602. 计数交换 Counting Swaps
计数交换 Counting Swaps
题目描述
给定一个 的排列 ,可进行若干次操作,每次选择两个整数 ,交换 。
设把 变成单调递增的排列 至少需要 次交换。
求有多少种操作方法可以只用 次交换达到上述目标。
因为结果可能很大,你只需要输出结果对 取模之后的值。
例如排列 至少需要 次交换才能变为 。
操作方法共有 种,分别是:
- 先交换数字 ,变成 ,再交换数字 ,变成 。
- 先交换数字 ,变成 ,再交换数字 ,变成 。
- 先交换数字 ,变成 ,再交换数字 ,变成 。
输入格式
第一行包含整数 ,表示一共有 组测试用例。
每个测试用例前都会有一个空行。
每个测试用例包含两行,第一行包含整数 。
第二行包含 个整数,表示序列 。
输出格式
每个测试用例输出一个结果,每个结果占一行。
样例
输入样例:
3
3
2 3 1
4
2 1 4 3
2
1 2
输出样例:
3
2
1
样例解释
第一组数据:,排列为 。
至少需要 次交换,有 种方法,如题目描述。
第二组数据:,排列为 。
至少需要 次交换,有 种方法。
第三组数据:,排列为 ,已经有序,,只有 种方法(不交换)。
数据范围
时空限制
- 时间限制:1 秒
- 空间限制:64 MB