题目链接:bzoj1485 虽然有点很难看,但是我也没有办法,csdn吞我题解啊。 #include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long LL;#define maxn 500010
首先可以把问题转化成在完全图上对边进行黑白染色。 对于每个点的置换,要求出有多少关于边的不动点。把置换分解成循环,可以发现,一个长度为 x x的点的循环内部有⌊x2⌋\lfloor\frac x2\rfloor个边的循环,两个长度为 x x和yy的点的循环之间有 gcd(x,y) \gcd(x,y)个边的循环,这样关于边的不动点总数就是 2m 2^m,其中 m m表示边的循环的总数。 但是直接
B u r n s i d e : ∣ X / G ∣ = 1 ∣ G ∣ ∑ g ∈ G ∣ X ( g ) ∣ Burnside:|X/G|=\frac{1}{|G|}\sum\limits_{g\in G}|X^{(g)}| Burnside:∣X/G∣=∣G∣1g∈G∑∣X(g)∣ 该题: ∣ X / G ∣ = 1 ∣ G ∣ ∑ b 2 k Π ( b i ) Π ( c i