A – Necklace of Beads Burnside 定理模板
假设有n个条件$S$,每个条件都是形如“$A$与$B$等价”的形式,要求集合$X$在这些条件下的方案数
将条件分解成循环的形式,那么方案数
其中,$X^g$是置换$g$作用于集合$X$之后的不动点个数 ,即不变的元素的个数
那么对于这道题,我们考虑两类置换
假设有一条长度为n的项链,旋转之后相同被视为相同方案,那么显然地,我们有n种对应的置换
即不旋转,旋转1次,旋转2次,…,旋转n-1次
考虑计算不动点个数
假设现在旋转了2次
如果要求旋转之后不变(不动点),那么1号点、3号点、5号点的颜色必须相同
因为1号点转一次可以转到3号点,而3号点转一次可以转到5号点
如果这三个点的颜色不相同,那么旋转之后就变了,不能再称之为不动点
同理,2号点、4号点、6号点的颜色必须相同
总结一下:
对于长度为n的项链,旋转i次之后得到的不动点个数为$gcd(i,n)$
不动点之间互不影响,假设有m种颜色,那么此时的染色方案为$m^{gcd(i,n)}$
分奇偶考虑
先考虑奇数
一条对称轴必定穿过一个顶点,也就是说,一个顶点对应一条对称轴
如果要满足变换之后不变,显然2、5号点必须相等,3、4号点必须相等,1号点随意
如果有n个点,m种颜色,且n为奇数,那么这种置换一共有n个,每种置换有$m^{\frac{n+1}{2}}$种方案
考虑偶数的情况
稍微麻烦一点
1.对称轴穿过一条边的中点,不穿过点
显然,此时有$m^{\frac{n}{2}}$种方案,共$\frac{n}{2}$种置换
2.对称轴穿过两个点
其它点两两配对,这两个点随便染色
共$m^{\frac{n-2}{2}+2}$种方案,共$\frac{n}{2}$种置换
最后除以置换总数2n即可
B – Let it Bead 和A题相同,将颜色数从3改为m即可
C – Color N颗珠子,N种颜色,而且$N\leq 10^9$
显然枚举旋转方案i不行
考虑枚举gcd
假设gcd=x,那么实际上就是要计算有多少个i满足$i\leq n$且$gcd(i,n)=x$
首先,x必须是n的因数,而且是i的因数
假设$n=x*a,i=x*b$,那么a与b互质
所以,i的个数为$\varphi(\frac{n}{x})$
x只有$\sqrt n$种取值
筛一下2e5之内的质数即可
D – Magic Bracelet n颗珠子,m种颜色,k种限制,每种限制形如“颜色a与颜色b不能放在一起”
先不管限制
考虑旋转i步之后的状态
假设虚线中是一个循环节,显然,1号点和5号点的颜色应当相同,而与2、3、4、5号点的颜色无关
如果要求满足限制,那么在上图中的含义等价为“放5颗珠子,第1颗珠子与第5颗珠子颜色相同并且满足限制的方案数”
循环节长度为i,那么珠子数就为i+1
将这个过程想象成一张图
如果a与b不能相邻,那么点a到点b之间没有边,否则有一条双向边
最开始的图是一张完全图,每个条件会删去一条双向边
答案就等于在这张图上走i+1步,且起点与终点相同的方案数
这张图的邻接矩阵是一个01矩阵,那么走i+1步就是取这个矩阵的i次方
答案为对角线上的数之和
由于又是$n\leq 10^9$,所以需要矩阵乘法
剩下的和上一道题一样,先筛质数然后求$\varphi$即可
E – Who’s Aunt Zhang 一个三阶魔方,给每个面、每个角、每条棱上色,共n中颜色,将魔方整体旋转之后相同的视为等价情况,问方案数
首先面数+棱数+角数=54+12+8=74
有4类置换
1.不动 方案数$n^{74}$
有1种置换
2.以某个面的中心为轴旋转
有3种方案:转90度、转180度、转270度
注意到第一种方案和第三种方案要求轴所在的那一面的四条棱都相等,而第二种方案仅要求两条棱相等
对于第一种和第三种方案,答案为$n^{20}$
正对着的两个面共有$3*2$)种方案
中心有1种,棱上的面有1种,角上的面有1种,这样的面有2个,所以有6种
剩下的四个面染色方案必须一样,但每个面中的颜色独立,共9种
正对着的两个面每个面上的棱只有1种方案,共2种
剩下的四条棱有1种
角分为两组,坐标一组,右边一组,每组颜色必须相同,共2种
所以共$6+9+3+2=20$种方案
置换个数为$2*3=6$种(以某两个面为轴,转90度或270度)
对于第二种方案,答案为$n^{38}$
正对着的两个面上,将面两两分组,每组颜色必须相同
共$(2+2+1)*2=10$种(角上的面两种,棱上的面两种,中心一种,共两个这样的面)
其余的四个面两两配对,每个面上颜色独立,共$9*2=18$种
将棱两两配对,每对的颜色必须相同,共6种
将角两两配对,每对的颜色必须相同,共4种
总方案数为$10+18+6+4=32$种
置换有3种(将面两两配对,每一对只有1种置换)
以相对的两个角为中心旋转
在这种情况下,旋转120度和旋转240度是等价的
都有$n^{26}$种方案
对着的两个角特殊考虑,其余的角、边、棱三个为一组,每组颜色互不影响,共$2+\frac{74-2}{3}=26$种
共$2*4=8$种置换
以相对的两条棱的中心为轴旋转
选中的两条棱特殊考虑,其余元素两两配对
共$2+\frac{74-2}{2}=38$种方案
有$\frac{12}{2}=6$种置换
所以总置换数为24,最后除以24即可
F – Toy 前置题目轮状病毒
首先不考虑等价的情况
有两种方法
矩阵树定理+打表(oeis)
矩阵是度数矩阵-邻接矩阵,再随便去掉某一行和某一列
然后打表
递推
先不考虑连成环的情况
设$f(n)$表示除了中心点,还有n个点的生成树个数
那么有
含义是,假设这次选取的连通块有i个节点,剩下的点共有$f(n-i)$种方案,这个连通块可以选择任意一个点连向中心点,共i种方案
化简这个式子
注意这个式子仅当$n\geq 3$时成立
考虑连成环的情况
就是1号点和n号点连了起来
假设这个连通块有i个点
那么有i-1种连通块可以选择(包含1-n这条边的连通块数),随便选一个点连向中心点
设方案数为$g(n)$
那么
总方案数
我们有$f(0)=1,f(1)=1,f(2)=3$
写成矩阵的形式就是
然后再求欧拉函数,枚举gcd即可
G – Birthday Toy 考虑n个位置,m种颜色,要求相邻颜色不同,并且首位颜色一样的方案数($n,m\leq 10^9$)
先考虑朴素的dp:dp[i][j][k]
表示到了第i个位置,这一位颜色为j,最开始的颜色为k的方案数
转移很好转移
考虑优化:我们并不关心当前位置的颜色是什么,我们只关心它与首位颜色相不相同,所以可以简化状态
dp[i][0/1]
表示到了第i位,与当前首位颜色相同/不相同的方案数
那么有
1 2 dp[i][0]=dp[i-1][1] dp[i][1]=dp[i-1][0]*(m-1)+dp[i-2][1]*(m-2)
矩阵乘法加速即可
I – Leonardo’s Notebook 结论:
两个长度为n的相同循环相乘,当n为奇数是结果是一个长为n的循环,否则是两个长度为$\frac{n}{2}$的循环的乘积
所以长度为奇数的循环一定可以被拆成两个相同循环的乘积,长度为偶数的循环需要两两配对,如果能配对上就可以
K – Find the Permutations 下标与序列构成了一个置换
将置换分解,注意到每个循环所需要的交换次数是循环长度-1
加起来就是n-循环节个数
所以dp,dp[i][j]
表示到第i个位置,一共有j个循环的方案数
i这个数可以新开一个循环,也可以插入到前面任意一个数的后面
1 dp[i][j]=dp[i-1][j-1]+dp[i-1][j]*(i-1)
L – Necklace 每种颜色的珠子有限制个数
还是枚举gcd,但是要求$\frac{n}{gcd}$必须是每种珠子个数的因数
然后可重排列
翻转有点毒瘤,考虑两种情况:n为奇数或是偶数
奇数比较简单,偶数又要分两种情况
注意细节,还是比较模板的
M – Cubes L + E