burnside引理和polya定理

burnside引理:$ans=\frac{1}{n} *(f(1)+...f(n))$

$f(i)$表示在i置换下本质不同排列的个数

polya定理:

利用本质不同位置的个数去计算$f(i)$

对于长度为n的序列移动i之后显然循环节是$gcd(n,i)$

考虑对于一个因数d,显然$gcd(n,i)=d$的个数是$phi(n/d)$

那么其实问题就是对于n的所有因数d,解决循环节长度至少是d(即循环节长度是d的倍数也可)的情况下的方案数

$ans=\frac{1}{n}*(\sum_{d|n}^{} {f(d)*phi(n/d)})$

例题:

1.https://www.luogu.com.cn/problem/P4980

2.https://codeforces.com/contest/1630/problem/E

 

posted @ 2022-02-06 15:48  尹吴潇  阅读(64)  评论(0编辑  收藏  举报