[笔记] 群论

Burnside 引理#

|X/G|=1|G|gG|Xg|

|G|:置换群的大小 (即置换的个数)

|X/G|:集合 X 在群 G 作用下的轨道数 (即或本质不同元素数)

|Xg|:在变换 g 下,X 集合中的不动点数 (即置换之后看起来没动情况数目)

Po´lya 定理#

|X/G|=1|G|gG|B|c(g)

|B|:每个元素的映射方式个数 (例如染色的颜色数)

c(g):置换 g 能拆分成的不相交的循环置换的数量 (即等价类的数量)

题目#

[P4727] 图的同构计数#

感觉比较清楚的题解.

[YZOJ7280] 凸多边形#

简要题意

对序列 ai 进行计数,要求满足 i=1mai=namax<n2

翻转和循环位移后相同的序列算同构。

T104,n107,3mn

解题思路

为了便于描述,记 lim=n12+1

这个题目看着就很群论不如 Burnside 引理直接来做。

首先考虑有哪些置换方式,旋转,和翻转再旋转,那么现在我们希望计算每种置换的不动点个数。

  • 只旋转,位移 k 位,将分为 gcd(k,m) 个等价类,每个等价类大小为 t=mgcd(k,m),那么相当于要计算 d 个数和为 nt 且最大的数不超过 lim 的方案数,直接容斥。

  • 旋转+翻转,按照 m 的奇偶讨论:

    • m 是奇数,所有 m 种情况都一定是分成 m12 个大小为 2 的等价类和 1 个大小为 1 的等价类,直接枚举大小为 1 的等价类这个元素的大小 i,然后计算 m12 个数和为 ni2 且最大的数不超过 lim 的方案数。

    • m 是偶数,有 m2 种情况是 m2 个大小为 2 的等价类,另外 m2 情况是 m21 个大小为 2 的等价类和 1 个大小为 1 的等价类。

      前面一种情况可以直接算。

      后面一种情况再讨论,如果两个大小为 1 的等价类相同,归到前一类算,否则枚举两者差值,然后两个等价类归为一个计算,需要注意此时这个等价类与其他等价类限制不同。

大概要注意一个细节就是分成若干等价类的时候, n 是否能被等价类数目整除。

前一类置换本质不同只有 m 种,而后一类置换所有提到的枚举都可以用上指标求和推出 O(1) 的式子。

最终时间复杂度为 O(n+m+Tm)

posted @   IrisT  阅读(84)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
主题色彩