题意

用k种颜色对n个珠子构成的环上色,旋转翻转后相同的只算一种,求不等价的着色方案数。

思路


Polya定理

X是对象集合{1, 2, ……, n}, 设G是X上的置换群,用M种颜色染N种对象,则不同的染色方案数为:   λ(g)表示置换g的轮换个数,且λ(g) = λ1(g) + λn(g) + …… + λn(g),其中λi(g)表示g中长度为i的轮换(循环)个数.


  本题是对一个n个珠子的圆珠的颜色,而圆珠的置换群有: Ⅰ翻转:1.当n为奇数时,有n种翻转,每种翻转的轴都是一个顶点和该顶点对边中点的连线,有n种置换,每种置换的轮换个数均为(n/2+1)。 2.当n为偶数时,有n种翻转,其中n/2种转轴是两个对应顶点连线,轮换个数为n/2+1;另n/2种转轴是两条对边中点的连线,轮换个数为n/2。 Ⅱ旋转:枚举旋转角度360/n*i,有n种旋转;第i种旋转有gcd(n, i)个轮换,每个轮换的长度都是n/gcd(n, i)。 然后带入公式即可.

代码

[cpp] #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <string> #include <cstring> #include <vector> #include <set> #include <stack> #include <queue> #define MID(x,y) ((x+y)/2) #define MEM(a,b) memset(a,b,sizeof(a)) #define REP(i, begin, end) for (int i = begin; i <= end; i ++) using namespace std; int gcd(int a, int b){ return b?gcd(b, a%b):a; } int main(){ //freopen("test.in", "r", stdin); //freopen("test.out", "w", stdout); int c, s; while(scanf("%d %d", &c, &s) != EOF){ long long res = 0; if (c + s == 0) break; if (s % 2 == 1){ res += (long long)s * pow(c, s/2+1); } else{ res += (long long)(s/2) * (pow(c, s/2) + pow(c, s/2+1)); } for (int i = 1; i <= s; i ++){ res += (long long)pow(c, gcd(s, i)); } printf("%I64d\n", res/2/s); } return 0; } [/cpp]

转载于:https://www.cnblogs.com/AbandonZHANG/p/4114132.html

POJ 2409 Let it Bead (Polya定理)相关推荐

  1. poj 2409 Let it Bead Polya计数

    旋转能够分为n种置换,相应的循环个数各自是gcd(n,i),个i=0时不动,有n个 翻转分为奇偶讨论,奇数时有n种置换,每种有n/2+1个 偶数时有n种置换,一半是n/2+1个,一半是n/2个 啃论文 ...

  2. 置换群Polya定理(poj 2409: Let it Bead)

    可以先看 置换群burnside引理(bzoj 1004: [HNOI2008]Cards) Polya定理公式(必须在没有限制下才能使用此公式): 其中|G|为总置换数,m表示可用的颜色数,c(gi ...

  3. POJ 2409 Let it Bead【Polya定理】(模板题)

    <题目链接> 题目大意: 用k种颜色对n个珠子构成的环上色,旋转.翻转后相同的只算一种,求不等价的着色方案数. 解题分析: 对于这种等价计数问题,可以用polay定理来解决,本题是一道po ...

  4. 解题报告 (五) Burnside引理和Polya定理

    Burnside引理 笔者第一次看到Burnside引理那个公式的时候一头雾水,找了本组合数学的书一看,全是概念.后来慢慢从Polya定理开始,做了一些题总算理解了.本文将从最简单的例子出发,解释Bu ...

  5. polya 定理总结

    公式 用cc 种颜色对 nn 个置换群G1,G2,-,GnG_1,G_2,\dots ,G_n着色,设每个置换群的循环节数为kik_i那么不同的着色总数 PG=1|G|∑ni=1ckiP_G = \f ...

  6. poj 2409 polya定理

    polya定理的入门题 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using ...

  7. 【POJ 1286】Necklace of Beads(polya定理)

    [POJ 1286]Necklace of Beads(polya定理) Necklace of Beads Time Limit: 1000MS   Memory Limit: 10000K Tot ...

  8. Polya定理,Burnside引理

    涉及到组合数学的问题,首先是群的概念: 设G是一个集合,*是G上的二元运算,如果(G,*)满足下面的条件: 封闭性:对于任何a,b∈G,有a*b∈G; 结合律:对任何a,b,c∈G有(a*b)*c=a ...

  9. poj2154 Color ——Polya定理

    题目:http://poj.org/problem?id=2154 今天学了个高端的东西,Polya定理... 此题就是模板,然而还是写了好久好久... 具体看这个博客吧:https://blog.c ...

最新文章

  1. 2021年大数据ELK(二十三):Kibana简介
  2. Strut2判断是否是AJAX调用
  3. 解决htmlfile: 未知的运行时错误
  4. hibernate 继承_Hibernate继承:每个类层次结构的表
  5. romfs, cramfs和ramdisk
  6. Android 手游闪屏极简方案
  7. 历史上杀伤力最大的笑话!!!
  8. 90-70-010-源码-CUBE查询-源码
  9. java购物车 数据库_网上购物车数据库设计(转)
  10. XSpreadsheet-在线表格插件
  11. Android系统信息获取 之十四:获取WIFI热点相关信息
  12. 分享,用sql快速创建MODEL,快速提高工作效率哦
  13. shell 备份并删除几日内的历史文件
  14. VC++2010下载教程
  15. 2022年谷歌Chrome等浏览器在线打开编辑保存微软Office/金山WPS的Word、Excel和PPT技术方案大全
  16. 数值计算值第四期:解线性方程组的扰动分析
  17. swfupload 无法加载_解决 KindEditor SWFUpload 批量上传检测用户登录状态的问题
  18. UOJ#449. 【集训队作业2018】喂鸽子(期望dp)
  19. (25):SPA单页面的理解
  20. MapReduce任务卡在Running Job状态的多种解决方法

热门文章

  1. 中国人口较少民族作家研讨会
  2. 虚拟机Ubuntu18.04 root下 连接 windows 中 winScp
  3. MySQL和mq一致性,Mysql与Redis一致性问题
  4. java设计按月每天签到_java实现app签到功能
  5. 字符动图_手把手教你做一个python+matplotlib的炫酷的数据可视化动图
  6. android home键后计时拉起app_使用React Native完成App软件
  7. matlab求距离判别函数,求MATLAB的逐步判别程序 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  8. 误差error,偏置bias,方差variance的见解
  9. 12bit灰度图像映射到8bit显示及python 实现
  10. Java生鲜电商平台-订单配送模块的架构与设计