[笔记] 群论
引理#
:置换群的大小 (即置换的个数)
:集合 在群 作用下的轨道数 (即或本质不同元素数)
:在变换 下, 集合中的不动点数 (即置换之后看起来没动情况数目)
定理#
:每个元素的映射方式个数 (例如染色的颜色数)
:置换 能拆分成的不相交的循环置换的数量 (即等价类的数量)
题目#
[P4727] 图的同构计数#
[YZOJ7280] 凸多边形#
简要题意
对序列 进行计数,要求满足 且 。
翻转和循环位移后相同的序列算同构。
。
解题思路
为了便于描述,记 。
这个题目看着就很群论不如 引理直接来做。
首先考虑有哪些置换方式,旋转,和翻转再旋转,那么现在我们希望计算每种置换的不动点个数。
-
只旋转,位移 位,将分为 个等价类,每个等价类大小为 ,那么相当于要计算 个数和为 且最大的数不超过 的方案数,直接容斥。
-
旋转+翻转,按照 的奇偶讨论:
-
是奇数,所有 种情况都一定是分成 个大小为 的等价类和 个大小为 的等价类,直接枚举大小为 的等价类这个元素的大小 ,然后计算 个数和为 且最大的数不超过 的方案数。
-
是偶数,有 种情况是 个大小为 的等价类,另外 情况是 个大小为 的等价类和 个大小为 的等价类。
前面一种情况可以直接算。
后面一种情况再讨论,如果两个大小为 的等价类相同,归到前一类算,否则枚举两者差值,然后两个等价类归为一个计算,需要注意此时这个等价类与其他等价类限制不同。
-
大概要注意一个细节就是分成若干等价类的时候, 是否能被等价类数目整除。
前一类置换本质不同只有 种,而后一类置换所有提到的枚举都可以用上指标求和推出 的式子。
最终时间复杂度为 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现