2016ACM-ICPC大连网络预选赛1001 Different Circle Permutation

题意:n个人,选出几个人(可以为0)做在一张圆桌上,要求在圆桌上坐着的人当中任意两人之间的角度是2π/n的倍数,不包括2π/n.问在旋转同构的意义下有几种坐法.

思路:旋转同构很容易就想到Polay定理和Burnside引理.

Polay定理结论:

L=1|G|(mc(g1)+mc(g2)+mc(g3)++mc(gn))

L即不同的染色方案,
G是置换群 G={g1,g2,g3,g4,...,gn} ,
gi 的循环节数为 c(gi) ,
m为m种颜色涂染.

Burnside引理:

L=1|G|k=1n|Zk|=1|G|j=1sD(aj)

L相同,G相同
Zk 为k的不动置换类,即G中使K保持不变的置换的全体,
D(aj) 表示在置换 aj 下不变的元素个数. 1<=j<=s ,s=|G|.

这道题可以看做黑色去染n个白色的点,使得相邻两点不为黑色.
f(n) 为不考虑旋转同构下的染色方案.
f(1)=1
f(2)=3
f(3)=4
f(4)=7
f(5)=11
推出 f(n)=f(n1)+f(n2) ,n是1e9的,直接循环肯定T,所以这里要用到矩阵优化O(logn)算出 f(n) .
举例模拟 F(n) f(n) 之间的关系.
n=4 时, |G|=n ,
D(g1)=1 (即none的情况,在旋转90的时候是不变的)
D(g2)=3 (即none的情况和正对面坐着两人的两种情况,在旋转180的时候是不变的)
D(g3)=1 (即none的情况,在旋转270的时候是不变的)
D(g4)=7 (即 f(4) ,在不考虑旋转同构的所有情况下旋转360都是不变的)
由此可以看出 D(gi)=f(gcd(n,i)) ,

当然这只是举某一个例子,希望有大神能理论帮助理解解释一下.
所以考虑旋转同构, F(n)=1nni=1f(gcd(n,i))
直接枚举n也肯定不行,看到gcd要多想想欧拉函数.
转化成即 F(n)=1nd|nf(d)ϕ(nd)
还需要特判 n==1

代码链接:https://github.com/PhyCoe/ACM-Training/blob/master/Code/hdu5868.cpp

以上也是参考题解https://async.icpc-camp.org/d/546-2016理解着写的,若有错误还望请各位大神指出,谢谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值