Magic Bracelet(POJ 2888,Burnside 引理 + 矩阵快速幂优化 dp)

一、题目链接

Magic Bracelet

二、题目大意

给定 m m m 种不同颜色的魔法珠子,每种颜色的珠子的个数都足够多。

现在要从中挑选 n n n 个珠子,串成一个环形魔法手链。

魔法珠子之间存在 k k k 对排斥关系,互相排斥的两种颜色的珠子不能相邻,否则会发生爆炸。(同一种颜色的珠子之间也可能存在排斥

请问一共可以制作出多少种不同的手链。

注意,如果两个手链经旋转后能够完全重合在一起,对应位置的珠子颜色完全相同,则视为同一种手链。

答案对 99739973 99739973 99739973 取模。

1 ≤ T ≤ 10 1 ≤ n ≤ 1 0 9 g c d ( n , 9973 ) = 1 1 ≤ m ≤ 10 0 ≤ k ≤ m ( m + 1 ) 2 1 ≤ a , b ≤ m 1 \leq T \leq 10 \quad 1 \leq n \leq 10^9 \quad gcd(n,9973)=1 \quad 1 \leq m \leq 10 \quad 0 \leq k \leq \frac{m(m+1)}{2} \quad 1 \leq a,b \leq m 1T101n109gcd(n,9973)=11m100k2m(m+1)1a,bm.

三、分析

由于循环之间存在限制关系,故无法使用 P o ˊ l y a P\acute olya Poˊlya 定理,而只能使用 B u r n s i d e Burnside Burnside 引理.

旋转操作共有 n n n 种置换,考虑一个置换 P i P_i Pi:顺时针旋转 i i i 个珠子( 1 ≤ i ≤ n 1 \leq i \leq n 1in).

通过二元一次不定方程解得循环长度为 n g c d ( n , i ) \frac{n}{gcd(n,i)} gcd(n,i)n,于是循环个数为 g c d ( n , i ) gcd(n,i) gcd(n,i).

因此置换 P i P_i Pi 的不动点个数等于长度为 g c d ( n , i ) gcd(n,i) gcd(n,i) 的环的合法方案数,记为 F ( g c d ( n , i ) ) F(gcd(n,i)) F(gcd(n,i)).

根据 B u r n s i d e Burnside Burnside 引理可得答案为 A N S = 1 n ∑ i = 1 n F ( g c d ( n , i ) ) \begin{aligned} ANS = \frac{1}{n}\sum_{i=1}^n{F(gcd(n,i))} \end{aligned} ANS=n1i=1nF(gcd(n,i)).

由于 n n n 最大 1 0 9 10^9 109,直接枚举 i i i 是无法接受的. 而 g c d ( n , i ) gcd(n,i) gcd(n,i) 最多只有 1600 1600 1600 种,所以我们去枚举 g c d ( n , i ) gcd(n,i) gcd(n,i).

于是 A N S = 1 n ∑ d ∣ n φ ( n d ) F ( d ) \begin{aligned} ANS = \frac{1}{n}\sum_{d|n}\varphi(\frac{n}{d})F(d) \end{aligned} ANS=n1dnφ(dn)F(d),其中 φ ( n d ) \varphi(\frac{n}{d}) φ(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值