「群论」

群论基本概念:
一种置换:一种排列方式.
一个置换群:满足封闭性,结合律,分配律,存在唯一单位元,逆元的一个置换的集合.
一个元素:某个置换条件下给所有点染色的一种方案.
一个等价类:一种元素k对于一个置换群G来说变换成的所有元素的集合.
不动点:一个元素使得对于某种置换后变换的染色情况不变.
等价类个数L:G的作用把等价类全集分成的数目和.
\(Burnside\):\(L=\sum_{i\in G}\frac{c_i}{|G|}\)
\(c_i\)为i置换下的不动点个数.
Burnside的含义,简而言之就是G的等价类数目=所有置换的不动点数目的平均数.
\(Polya\):\(L=\sum_{i\in G}\frac{m^{h_i}}{|G|}\)
\(h_i\)为i置换的循环节个数,m是颜色个数.
Polya是Burnside的特殊情况应该是吧,毕竟没有任何限制条件.

例题:
1.Cards
Burnside+背包
n张牌,要求染成三种颜色,每种颜色的个数有限制,有m种置换,求|G|下的等价类个数.
有限制无法使用Polya,所以用Burnside.
考虑某种置换的不动点个数,就是满足对于该置换的任意循环节内所有元素都相等的方案数.
问题变成的有x个大小为y的物品,求用a,b,c三种颜色染色有多少种可行的方案.
背包转移即可.

2.poj2154Color
Polya
环长n,可选颜色n种,求旋转同构的等价类个数.
n=1e9
其实不是很分的清楚旋转和翻转...
旋转就是每个点都有做为1号点的一种方案.
发现:
对于一种旋转i(逆时针旋转i个物品)
循环节个数为\(gcd(i,n)\),循环节长度\(\frac{n}{gcd(i,n)}\)

3.poj2888 Magic Bracelet
Burnside+矩阵快速幂
环长n,有m种颜色,给定k种不相邻关系,问旋转同构等价类个数.
n=1e9 m=10
对于序列上的问题很容易通过矩阵快速幂优化dp统计出合法的方案数.
对于环,只需要强行规定第一个颜色和最后一个(n+1)颜色相同.
gcd 的处理同上.

4.周末晚会
Burnside+dp
环长n,不能有超过k个女孩相邻,求旋转同构等价类个数.
n=2000 k=2000
不考虑环的情况很容易列出f[i][j]表示结尾是j个女孩的方案数.
枚举每个循环节开头女孩个数x,贡献答案g[i][0~x-j].
g[i][j]表示开头钦定是男孩结尾是j个女孩的方案数.
容易发现g[i][j]=f[i-1][j].

posted @ 2020-02-24 07:50  _xuefeng  阅读(1295)  评论(0编辑  收藏  举报