SYT的水题选讲1
Posted icantfindaname
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SYT的水题选讲1相关的知识,希望对你有一定的参考价值。
题意
定义一个排列(A)的权值(f(A)=min(i),A^i=I,iin N^+),其中(A^i)表示转置快速幂,I表示单位排列。例如,(f({1,2,3,4,5})=1,f({2,3,1,5,4})=6).
给定(n),对于所有长度为(n)的排列(A),求(prod f(A)operatorname{mod}P).
(Nle 7500),(Pin[10^8,10^9+7])且是质数
source :[USACO20OPEN]Exercise P
题解
一个排列的权值,相当于这个排列所成的环大小的LCM
最后要输出(prod),所以我们考虑统计答案中每个质数的指数。由于欧拉定理,我们只需要对指数模(P-1)就可以。
有一个常见套路,考虑枚举(p^i),如果我们发现某个排列的权值是(p^i)的倍数,则给(p)的指数增添一点贡献。
现在有2种DP的做法
- 暴力DP
枚举(p^i),令(f_{i,1/0})表示长度为(i)的排列,权值是/否(p^i)倍数的方案数,我们枚举1号点所在的排列长度,有
转移系数我们认为是钦定1号点包含于一个排列(第二维略,请自行补充)
(O(n^3)),过不了。
- 巧妙的DP
对于每一个质数,我们求的是
(fac)表示其中包含(p)质因子的个数,(len_i)表示循环圈的长度。
套一层min-max
容斥
枚举(i)和(p)。我们需要求出,有多少个子集,他们的每一个(p^i|len_i),最后乘一个容斥系数,再乘这个子集出现的次数。
令(t=p^i)。我们考虑(dp_n)表示长度为(nt)的权值,我们有
转移系数带个负号是因为容斥系数导致的。注意为了凑形式(dp_0=-1).
最终答案下,(p)的指数的贡献是
(sum dp_iC_{n}^{it}(n-it)!)
考虑一个子集出现了多少次。
每次DP的复杂度是(O(frac{n^2}{i^2})).由于(sum_{i=1}^infin frac{1}{i^2})收敛,所以总复杂度(O(n^2))。
以上是关于SYT的水题选讲1的主要内容,如果未能解决你的问题,请参考以下文章