Atcoder abc226
F - Score of Permutations
排列P,
初始,i号人有球i
每次 所有 i != pi 的人, 把球给pi号人
在 > 0 次后,如果所有人又是i号人有球i, 那么就停止
分数 = 最小的次数
求所有排列方案 的分数的k次方的和
mod 998244353
限制
N 50
k 1e4
2 s
1024 mb
我的思路
很明显, 交换的圈构成环, 次数 = lcm(每个环长)
N 很小, 是不是可以枚举因数
dp[i][j] =
使用i个,最大是j,的{lcm,方案数}
dp[i][j]
贡献来自 dp[i- tm][m],m > j, t > 0
, 即n-i+tm
个中选tm
个, 然后分成t
组每组m个
因为组合tm中分成t组,每组m个
这样想,tm中最小的作为开头,依次剩下的选m-1个, 然后剩余就是(t-1)m 同样的
这样每次考虑最小的所在环, 就不重不漏
$\binom{n-i+tm}{tm} A(tm-1,m-1) \cdot A((t-1)m-1,m-1) \cdots$
$ = \binom{n-i+tm}{tm} \frac{(tm)!}{m\cdot 2m \cdots tm}$
$ = \binom{n-i+tm}{tm} \frac{(tm)!}{m^t * t!}$
似乎就对了