UVA11255 Necklace Burnside、组合】的更多相关文章

VJ传送门 因为有每种颜色个数的限制,所以不能使用Polya 考虑退一步,使用Burnside引理求解 回忆一下Burnside引理,它需要求的是置换群中每一个置换的不动点个数,也就是施加一次置换之后新状态与原状态相同的状态个数.而施加一次置换之后状态不变的充要条件是:对于这个置换中的每一个循环,循环中所有位置的颜色都相同. 为了叙述方便,约定\(f(i,j,k,l) = \frac{i!}{j!k!l!}\) 首先考虑旋转.假设某一种旋转置换使得\(i\)位置的珠子变到\(i+k\)位置\((…
[题目分析] 题目大意:一个环有n个点,共染三种颜色.问 在旋转和对称的情况下有多少种本质不同的方案数. Burnside直接做. [代码] #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define ll long long #define F(i,j,k) for (int i=j;i<=k;++…
题目链接 https://www.luogu.org/problem/P5564 题解 这题最重要的一步是读明白题. 为了方便起见下面设环长可以是\(1\), 最后统计答案时去掉即可. 实际上就相当于如果只有树没有环,答案就是卡特兰数第\((n-1)\)项.令\(C(x)\)为Catalan数生成函数,\(T(x)\)为这种树的生成函数,则\(T(x)=xC(x)\). 然后环的话可以考虑Burnside引理,首先枚举环长,枚举置换,易得答案为\(\sum^n_{k=1}\frac{1}{k}\…
题目链接 (Luogu) https://www.luogu.org/problem/P4727 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=1488 题解 Burnside引理经典题. 首先考虑一个\(O(n!\times poly(n))\)暴力: 枚举点的置换,然后计算在置换下保持不变的图的个数. 把置换拆成若干个轮换. (1) 考虑轮换内部: 假设一轮换为\((a_1\ a_2\ ...\ a_n)\), 那么\((a_…
题意 题目链接 分析 sπo yyb 代码 #include<bits/stdc++.h> using namespace std; typedef long long LL; #define go(u) for(int i = head[u], v = e[i].to; i; i=e[i].lst, v=e[i].to) #define rep(i, a, b) for(int i = a; i <= b; ++i) #define pb push_back #define re(x)…
考虑\(Burside\)引理,设\(f(x)\)表示置换拆成循环的个数为\(x\)时的答案,那么最终的结果就是\(\displaystyle \frac{\sum_{i=1}^n f(gcd(i,n))}{n}\),化简之后就是\(\displaystyle \frac{\sum_{d|n}f(d)\varphi(\frac{n}{d})}{n}\). 考虑如何计算不动点的数量,为了方便首先把\(n=m\)的情况直接处理掉,那么现在问题变成了,把环上的点编号,所有模\(d\)相同的点都必须是同…
和poj 2409差不多,就是k变成3了,详见 还有不一样的地方是记得特判n==0的情况不然会RE #include<iostream> #include<cstdio> using namespace std; long long n,ans; long long ksm(long long a,long long b) { long long r=1; while(b) { if(b&1) r=r*a; a=a*a; b>>=1; } return r; }…
题目链接 https://www.luogu.org/problem/P4708 题解 看上去Luogu P4706-4709是Sdchr神仙出的一场比赛,一道水题和三道很有趣的题终于全过了纪念QAQ(然而后三道都看了题解) 以及为啥这题AC代码几乎全是打表.. 前置题目: BZOJ1488 求\(n\)个点无标号无向图个数.(欢迎阅读 https://www.cnblogs.com/suncongbo/p/11295453.html ) 没做过的建议先去做一下那题. 这道题依然是枚举拆分数,然…
POJ 2409 Let it Bead 这题就是polya公式的直接套用,唯一麻烦的是置换群的种类数,由于可以翻转,所以除了要加上pow(c,gcd(s,i))这些平面旋转的置换群,还要加上翻转的.由于翻转的情况奇偶是不同的,所以需要分开讨论:偶数:pow(c,(s-2)/2+2)*(s/2)+pow(c,(s/2))*(s/2);(里面包含了两个对点和两个对边的旋转) 奇数:pow(c,(s-1)/2+1)*s;(一个点和对边的旋转) #include<iostream> #include…
零.约定: (置换等名词会在前置知识中有解释) \(1.\)在本文中,题目要求的染色方案等统称为"元素". \(2.\)两个元素严格相等我们记做"\(=\)",两个元素等价(按题目所给的置换可以互相得到)我们记做"\(\Leftrightarrow\)". \(3.\)元素\(a\)进行置换\(g\)我们记做\(a\otimes g\). \(4.\)置换之间的乘积记做\(\odot\),\(g_i=g_j\odot g_k\),当且仅当\(\f…