本文是一个笨比学习组合数学的学习笔记,因为是笨比,所以写的应该算是很通俗易懂了。

首先,我们考虑这么一个问题:你有无穷多的\(p\)种颜色的珠子,现在你想要的把他们中的\(n\)个以圆形的形状等间距的黏在一个可以旋转的圆盘上,求方案数。

然后,该问题的答案是 \(\frac{1}{n}\Sigma_{d|n}\phi(\frac{n}{d})p^d\) ,之中\(\phi()\)表示欧拉函数,下面解释一下为什么会出现这样一个数论函数。

首先,我们来复习一下polya定理:设一个序列上定义了一置换群\(|G|\),则对该序列做\(p\)种颜色的染色,方案数为\(\frac{1}{|G|}\Sigma^{|G|}_{i=1}p^{c_i}\),之中,\(|G|\)表示置换群大小(元素个数),\(c_i\)表示\(G\)中第\(i\)个置换的循环节数目。

那么在上述圆排列问题中,置换群也就是旋转变换的群了,注意这里不考虑翻转变换(这也是为什么题目里说要黏在可旋转的圆盘上的原因,这样就和翻转变换无关了)。那么显然,一个有\(n\)个珠子的圆环,一共对应了\(n\)种旋转变换,分别是从转\(1\)个单位到转\(n\)个单位(也就是不转,或者说转0个单位)的\(n\)种。因此,置换群大小\(|G|=n\)。

把\(|G|=n\)代入polya的公式里,得到\(ans=\frac{1}{n}\Sigma^{n}_{i=1}p^{c_i}\),那么对比真正的答案,接下来要说明的就是,为什么\(\Sigma^{n}_{i=1}p^{c_i}=\Sigma_{d|n}\phi(\frac{n}{d})p^d\)。

答案其实简单的有些弱智:合并同类项

\(\Sigma^{n}_{i=1}p^{c_i}\)这一式子里,其实有\(n\)项,那么很自然的一个想法就是:\(p^{c_i}\)是不是有不少重复的呢?事实上,是的,甚至只有\(\sqrt{n}\)种不同的\(p^{c_i}\)。

下面随便假设有个指数\(d\),那我想知道\(\Sigma^{n}_{i=1}p^{c_i}\),有几个\(p^d\)出现,也就是有几个\(c_i=d\)。回忆一下,这里\(c_i\)指的是第\(i\)个置换循环节的数量,这个要怎么求呢?这里需要一个简单但nb的小知识:

定理:对于\(n\)个珠子组成的圆的旋转变换来说,旋转了\(x\)个单位的变换对应的循环节数量有\(gcd(n,x)\)个,特别的,\(x=0\)时的循环节数量有\(n\)个。

不是证明的证明:考虑一个青蛙跳石头的问题,也就是有\(n\)块石头圆形排列,编号从\(0~n-1\),青蛙初始在\(pos\)的位置,每次青蛙会跳x步,那么青蛙跳一步就相当于\(pos=(pos+x)%k\),现在,请问青蛙一直跳下去,能踩到多少块石头。例如,\(n=6,x=4,pos=2\)时,青蛙就只能跳到编号为\(0,2,4\)的三块儿石头上。该问题的答案是\(\frac{n}{gcd(n,x)}\),这个证明略了,这是个比较好理解但不太好表述的数论结论。

那么,如果我们把旋转\(x\)个单位的置换群理解成每步跳\(x\)格的青蛙的话,就有循环节长度 = 青蛙能跳到的石头个数 = \(\frac{n}{gcd(n,x)}\) 。又因为从青蛙的例子里可以看出,该长度和青蛙初始的\(pos\)无关,所以所有的循环节长度都是\(\frac{n}{gcd(n,x)}\)。

进而,由于 n=循环节长度*循环节数量,就可以解得循环节数量为\(gcd(n,x)\),这就是旋转\(x\)对应置换的循环节数量。

书归正传,我们现在想知道的是,给定一个整数\(d\),有几个\(p^d\)出现在\(\Sigma^{n}_{i=1}p^{c_i}\)中,或者说多少个\(c_i=d\)。\(c_i\)的含义是循环节数量,也就是对于\(x\in [1,n]\),有多少个\(x\)对应的循环节数量是\(d\)。废话不多说,按刚才的结论,这也就是问有多少个\(x\)满足\(gcd(n,x)=d\)。

有多少个\(x\)满足\(gcd(n,x)=d\):这又是个数论问题,首先,变换成\(gcd(\frac{n}{d},\frac{x}{d})=1\),这个变换是科学的,因为\(gcd(n,x)=d\)中\(n\)和\(x\)一定是\(d\)的倍数。那么,有多少个\(x\)满足\(gcd(\frac{n}{d},\frac{x}{d})=1\)呢?由于满足\(gcd(\frac{n}{d},狗)=1\)的狗有\(\phi(n/d)\)个(根据欧拉函数的定义),而狗和\(x\)显然是一一对应的,所以这样的\(x\)就也有\(\phi(n/d)\)个。

所以,\(ans=\frac{1}{n}\Sigma^{n}_{i=1}p^{c_i}=\frac{1}{n}\Sigma_{d|n}\phi(\frac{n}{d})p^d\),这里\(d|n\)是因为根据上面推导,循环节数量\(d\)显然一定是\(n\)的因子。

[组合数学] 圆排列和欧拉函数为啥有关系:都是polya定理的锅的更多相关文章

  1. HDU5780 gcd (BestCoder Round #85 E) 欧拉函数预处理——分块优化

    分析(官方题解): 一点感想: 首先上面那个等式成立,然后就是求枚举gcd算贡献就好了,枚举gcd当时赛场上写了一发O(nlogn)的反演,写完过了样例,想交发现结束了 吐槽自己手速慢,但是发了题解后 ...

  2. BZOJ 2190仪仗队【欧拉函数】

    问题的唯一难点就是如何表示队长能看到的人数?如果建系,队长所在的点为(0,0)分析几组数据就一目了然了,如果队长能看到的点为(m,n),那么gcd(m,n)=1即m n 互质或者是(0,1),(1,0 ...

  3. XMU 1615 刘备闯三国之三顾茅庐(三) 【欧拉函数+快速幂+欧拉定理】

    1615: 刘备闯三国之三顾茅庐(三) Time Limit: 1000 MS  Memory Limit: 128 MBSubmit: 45  Solved: 8[Submit][Status][W ...

  4. 由 [SDOI2012]Longge的问题 探讨欧拉函数和莫比乌斯函数的一些性质和关联

    本题题解 题目传送门:https://www.luogu.org/problem/P2303 给定一个整数\(n\),求 \[ \sum_{i=1}^n \gcd(n,i) \] 蒟蒻随便yy了一下搞 ...

  5. 【省选十连测之九】【DP】【组合计数去重】【欧拉函数】基本题

    目录 题意: 输入格式: 输出格式: 数据范围: 思路: 嵌套题的转移 基本题的转移 Part1 Part2 Part3 代码 题意: 这是一个关于括号组合的题. 首先定义一道题是由'(',')',' ...

  6. HDU 5430 Reflect(欧拉函数)

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=5430 从镜面材质的圆上一点发出一道光线反射NNN次后首次回到起点. 问本质不同的发射的方案数. 输入描述 ...

  7. HDU 4483 Lattice triangle(欧拉函数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4483 题意:给出一个(n+1)*(n+1)的格子.在这个格子中存在多少个三角形? 思路:反着想,所有情 ...

  8. hdu 5279 Reflect phi 欧拉函数

    Reflect Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_chi ...

  9. UVA12493 - Stars(求1-N与N互质的个数)欧拉函数

    Sample Input 3 4 5 18 36 360 2147483647 Sample Output 1 1 2 3 6 48 1073741823 题目链接:https://uva.onlin ...

随机推荐

  1. B. Welfare State(RMQ问题的逆向考虑)

    \(对于操作1,我们只关心最后一次操作.\) \(对于操作2,我们只关心值最大的一次操作.\) \(也就是说,我们记录每个居民最后一次被修改的位置\) \(然后它的最终答案就是从这个位置起,max(操 ...

  2. P1364 医院设置(树型结构)

    传送门闷闷闷闷闷闷 ~~放一个可爱的输入框.~~ 考虑在O(n)的时间内求数以每个节点为医院的距离和. \(设想一下,如果我们已知以1为根节点的距离和f[1],如何求出子节点呢?\) 当医院从1转换到 ...

  3. 播放音乐(mciSendString)

    1.需要引用命名空间using System.Runtime.InteropServices; 这里只是做了个简单的播放功能,想了解更多查看它的官方文档 [DllImport("winmm. ...

  4. MinorGC前检查

  5. Intel x86

    PCIe一般规则: purely平台 Intel UPI, Processor DMI3 (Rx lanes only), and Processor PCIe3 (Rx lanes only)Not ...

  6. [hdu5593 ZYB's Tree] 树上统计

    题意:给1棵N(≤500,000)个节点的树,每条边边权为1,求距离每个点距离不超过K(K≤10)的点的个数的xor和. 思路:由于K很小,可以考虑把距离作为状态的一部分,然后研究父子之间状态的联系. ...

  7. 前端组件:支持多选,支持选项筛选的下拉框选择器(基于Jquery和Bootstrap)

    效果图一:多选 效果图二:选项筛选 最后奉献源码,复制出来直接可用 <!DOCTYPE html> <html> <head> <meta charset=& ...

  8. php反序列化(昨天的补充)

    魔术方法 在对PHP反序列化进行利用时,经常需要通过反序列化中的魔术方法,检查方法里是否有敏感操作来进行利用. 常见方法: 创建对象时触发:__construct() 对象被销毁时触发:__destr ...

  9. ql的python学习之路-day6

    字节编码: 这一节主要学习的是各种编码模式的相互转换,另外插两句话,今天的心情不是特别好,又没控制好自己的情绪,以后要心存阳光,好好的对待生活和身边的人. 废话不多说了直接贴码: #!/usr/bin ...

  10. Centos 7 下自启动服务配置

    在服务器部署服务后,往往需要将服务设置成开机自启的状态 ,以防设备出现宕机或断电重启,服务无法访问的情况. 对于常见的服务(httpd,mysqld,nginx)来说,可通过系统 systemctl ...