#P17426. [ICPC 2018 Xuzhou R] Rikka with Sorting Networks
[ICPC 2018 Xuzhou R] Rikka with Sorting Networks
题目描述
Rikka 知道冒泡排序是一种简单而优美的算法,快速排序是一种复杂但高效的算法,希尔排序则是一种怪异却实用的算法。Rikka 对所有的排序算法都很感兴趣,她可以为 ICPC 竞赛想出任意多的新题目。
Rikka 讨厌那些不断用相同思路出题的人,她希望自己不会变成自己所讨厌的样子。尽管她已经出过几道与归并排序、插入排序等排序算法相关的题目,她决定向你展示最后一道关于排序算法的题,从而为这个系列画上永远的句号。
在这里,Rikka 引入了排序网络,并首先定义了比较器。对于一个由前 个最小正整数构成的排列 ,记作 ,一个比较器 ()会将 中的第 个元素和第 个元素以非递减序排列。形式化地,一个比较器是一个映射 ,满足
- ;且
- ;且
- 对所有满足 且 的 ,有 。
Rikka 将一个排序网络定义为一系列比较器的复合,并为你提供了一个由 个顺序给出的比较器构成的排序网络。现在,Rikka 希望你能统计有多少个从 到 的排列,在经过给定的排序网络后会变成一个几乎有序的排列。她称一个从 到 的排列是几乎有序的,当且仅当其最长上升子序列的长度至少为 。
输入格式
输入包含多组测试数据,第一行包含一个整数 (),表示测试数据的组数。
对于每组测试数据,第一行包含三个整数 (),表示排列的长度,(),表示比较器的数量,以及 (),一个用于输出的质数。
接下来 行,第 行包含两个整数 和 ,表示第 个比较器 。
输出格式
对于每组测试数据,输出一行一个整数,表示满足条件的排列数对 取模的结果。
4
4 0 998244353
4 1 998244353
1 2
4 3 998244353
1 2
2 3
1 2
4 6 998244353
1 2
2 3
1 2
3 4
2 3
1 2
10
14
24
24
提示
翻译由 DeepSeek V4 Pro 完成