luogu#P16449. [XJTUPC 2026] 怪商一克拉七鲜鱼丸
[XJTUPC 2026] 怪商一克拉七鲜鱼丸
题目描述
从前有一对好朋友,他们名叫小移和小换。他们都是远近闻名的排序大师!对于一个长度为 的排列 ,小移每次操作可以选一个区间将它循环右移一位,而小换每次操作可以交换两个不同元素的位置。
其中,排列 ,是指满足 的一个序列。
形式化地,
- 小移的每次操作为:选择一段区间 (),若原区间的元素为 ,则操作后这一区间的元素变为 ;
- 小换的每次操作为:选择两个不同的位置 (),交换 与 。
今天你打算主持一局黑影杀,结果平常总是参加的小移和小换却都没有来,你感觉很疑惑,于是你决定调查其中原委。原来是有个坏蛋来挑拨离间!这家伙先是对小移说:「你看 这个排列,你竟然要操作整整 次才能把它排序!要是小换来,一次就能排完,你实在是太不牛了,赶快退休吧!」小移愤怒地把他轰走了,可到了晚上这个排列却在小移心里挥之不去,他几乎一晚上没睡着……然后这个坏蛋又和小换讲:「你看 这个排列,你竟然要操作整整 次才能把它排序!换作小移来,一次就能完事,你实在是菜得没边了,速速退役吧!」小换愤怒地把他赶跑了,可到了晚上这个排列却在小换脑海里一直转悠,他简直做了一晚上噩梦……
这事简直是太魔怔了。当局者迷旁观者清,你打算用最直接的方式来彻底解除这个误会:对于给定的整数 ,你想对于任意的 计算出满足「当采用最小化操作次数的策略时,小移需要操作 次、小换需要操作 次来完成排序」的长度为 的排列数量 。让数据说话,他们就能充分认识彼此的能力,从而解开心结,成为更好的朋友。你能完成这个任务吗?当然由于排列数量可能很大,给定 ,请将答案对 取模。
请注意,对于两个长度为 的排列 和 ,被视为两个不同的排列,需要被统计两次,当且仅当存在 ()满足 。
请注意,上述文本中的排序,是指将排列从小到大排序。即将一个排列 ,通过操作变为 。
输入格式
输入共一行,仅包含两个整数 和 (,),用一个空格分隔。
输出格式
输出 行,每行包含 个整数,用一个空格分隔。第 行的第 个整数表示 对 取模的结果。
3 21
1 0 0
0 2 1
0 1 1
10 10
1 0 0 0 0 0 0 0 0 0
0 9 8 7 6 5 4 3 2 1
0 8 7 9 1 0 3 7 9 6
0 7 9 3 1 0 2 4 8 6
0 6 1 1 4 7 8 4 6 6
0 5 0 0 7 6 7 3 8 9
0 4 3 2 8 7 4 3 5 4
0 3 7 4 4 3 3 6 6 4
0 2 9 8 6 8 5 6 8 4
0 1 6 6 6 9 4 4 4 0
15 2
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 1 0 1 1 1 0 1 1 1 0 1 1 1
0 0 0 1 0 1 1 0 1 0 0 1 0 1 1
0 1 1 0 0 1 1 0 1 1 1 0 0 1 1
0 0 1 1 1 0 0 1 0 1 0 0 0 1 1
0 1 1 1 1 0 0 1 0 0 0 0 0 1 1
0 0 0 0 0 1 1 0 1 0 0 0 0 1 1
0 1 1 1 1 0 0 1 1 0 0 0 0 1 1
0 0 1 0 1 1 0 0 0 0 1 0 1 1 0
0 1 1 0 1 0 0 0 0 1 1 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 1 0 0 0
0 1 1 0 0 0 0 0 0 1 1 0 0 0 0
0 0 1 1 1 1 1 1 1 1 0 0 0 0 0
0 1 1 1 1 1 1 1 1 0 0 0 0 0 0