#P16523. 白驹过隙

    ID: 18671 远端评测题 1000ms 128MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>动态规划 DPO2优化组合数学容斥原理

白驹过隙

背景

三尸出鬼,亦生亦灭。以日为年,以此铭心。

题目描述

给出一个长为 nn 的序列 pp,求有多少个本质不同的序列 p′p' 满足其是 pp 的一个重排且恰好有 mm 个 ii 满足 pi′+1=pi+1′p'_i+1=p'_{i+1}。

::::info[重排]{open} 序列 a′a' 是长为 nn 的序列 aa 的一个重排当且仅当序列 a′a' 满足以下两个条件:

  • 序列 a′a' 的长度为 nn。
  • 存在一个 1∼n1\sim n 的排列 pp 使得 ai=api′a_i=a'_{p_i}。 ::::

::::info[本质不同]{open} 两个长为 nn 的序列 a,ba,b 本质不同当且仅当存在一个 ii 满足 ai≠bia_i\not=b_i。 ::::

输入格式

本题有多组测试数据。

第一行输入一个数 TT,表示数据组数。

接下来输入 2T2T 行,代表 TT 组数据。

每组数据第一行输入两个数 n,mn,m,第二行输入 nn 个数,表示序列 pp。

输出格式

输出一行一个数,表示答案。对 998244353998244353 取模。

2
5 0
1 1 2 3 3
4 1
1 1 1 2
12
3

提示

请对程序常数因子给予充分的信任。

本题采用捆绑测试。

Subtask n,m≤n,m\le 特殊性质 分数
1 88 无 55
2 1616 m=0m=0 1515
3 100100 无 2020
4 500500 pi=ip_i=i 1010
5 ^ 存在一个 kk 满足 k∣nk\mid n 且 pi=⌈ik⌉p_i=\left\lceil\frac{i}{k}\right\rceil 1515
6 无 3535

对于 100%100\% 的数据,保证 1≤pi≤n1\le p_i\le n,0≤m<n≤5000\le m<n\le 500,1≤T≤51\le T\le 5,且 pi,n,mp_i,n,m 均为正整数。