Burnside定理:若一个着色方案s经过置换f后不变,称s为f的不动点,将置换f的不动点的数目记作C(f)。等价类的数目等于所有C(f)的平均值。

一个项链,一个手镯,区别在于一个能翻转一个不能,用t种颜色染n颗珠子,求等价类的个数。

旋转置换群一共有n个置换,分别对应将项链整体逆时针旋转0个、1个、2个...珠子的置换。

对于第i个置换,第0个、i个、2i...个珠子构成一个循环,共有gcd(n, i)个循环,每个循环中有n / gcd(n, i)个珠子。

所以n个置换,每个置换的不动点有tgcd(i, n)个。

对于翻转的置换群根据n的奇偶分两种情况:

  • n为奇数,对称轴有n条,每条都穿过一个珠子,每个置换有(n+1)/2个循环,其中包括(n-1)/2个长度为2的循环和一个长度为1的循环(就是穿过的那个珠子)。所以不动点的总数为nt(n+1)/2
  • n为偶数,有n/2条穿过珠子的对称轴,每个对称轴穿过两个珠子。共有n/2+1个循环,其中包括n/2-1个长度为2的循环 和 2个长度为1的循环;还有n/2条不穿过珠子的对称轴,共有n/2个长度为2的循环。

另 a = sum{ tgcd(m, i) | 0 ≤ i ≤ n-1 }

如果n为奇数,b = nt(n+1)/2

如果n为偶数,b = n/2 * (t(n/2+1) + tn/2)

则所求答案分别为 a/n 和 (a+b)/(2n)

 #include <cstdio>
typedef long long LL; int gcd(int a, int b)
{ return b == ? a : gcd(b, a%b); } const int maxn = ;
LL p[maxn]; int main()
{
//freopen("in.txt", "r", stdin); p[] = ;
int n, t;
while(scanf("%d%d", &n, &t) == )
{
for(int i = ; i <= n; i++) p[i] = p[i-] * t;
LL a = , b = ;
for(int i = ; i < n; i++) a += p[gcd(n, i)];
if(n & ) b = n * p[(n+)/];
else b = n/ * (p[n/+] + p[n/]);
printf("%lld %lld\n", a/n, (a+b)/n/);
} return ;
}

代码君

UVa 10294 (Pólya计数) Arif in Dhaka (First Love Part 2)的更多相关文章

  1. UVA 10294 等价类计数

    题目大意: 项链和手镯都是若干珠子穿成的环形首饰,手镯可以旋转和翻转,但项链只能旋转,给n个珠子,t种颜色,求最后能形成的手镯,项链的数量 这里根据等价类计数的polya定理求解 对于一个置换f,若一 ...

  2. 【uva 10294】 Arif in Dhaka (First Love Part 2) (置换,burnside引理|polya定理)

    题目来源:UVa 10294 Arif in Dhaka (First Love Part 2) 题意:n颗珠子t种颜色 求有多少种项链和手镯 项链不可以翻转 手镯可以翻转 [分析] 要开始学置换了. ...

  3. UVA 10294 项链与手镯 (置换)

    Burnside引理:对于一个置换\(f\), 若一个着色方案\(s\)经过置换后不变,称\(s\)为\(f\)的不动点.将\(f\)的不动点数目记为\(C(f)\), 则可以证明等价类数目为\(C( ...

  4. [Uva10294]Arif in Dhaka

    [Uva10294]Arif in Dhaka 标签: 置换 Burnside引理 题目链接 题意 有很多个珠子穿成环形首饰,手镯可以翻转和旋转,项链只能旋转.(翻转过的手镯相同,而项链不同) 有n个 ...

  5. UVa 10294(polya 翻转与旋转)

    Arif in Dhaka(First Love Part 2) Input: standard input Output: standard output Time Limit: 2 seconds ...

  6. 【等价的穿越】Burnside引理&Pólya计数法

    Problem 起源: SGU 294 He's Circle 遗憾的是,被吃了. Poj有道类似的: Mission 一个长度为n(1≤n≤24)的环由0,1,2组成,求有多少本质不同的环. 实际上 ...

  7. 组合数学之Pólya计数理论

    1 群 群$(G, cdot)$: 闭合, 结合律, 幺元, 逆 1.1 置换群 置换为双射$pi:[n]to [n]$, 置换之间的操作符 $cdot$ 定义为函数的复合, 即$(pi cdot s ...

  8. Uva 10294 Arif in Dhaka (First Love Part 2)

    Description 现有一颗含\(N\)个珠子的项链,每个珠子有\(t\)种不同的染色.现求在旋转置换下有多少种本质不同的项链,在旋转和翻转置换下有多少种本质不同的项链.\(N < 51,t ...

  9. UVa 10294 Arif in Dhaka (First Love Part 2)(置换)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35397 [思路] Polya定理. 旋转:循环节为gcd(i,n) ...

随机推荐

  1. [搜片神器]winform程序自己如何更新自己的方法代码

    DHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMO 数据处理程序开源地址:https://github.com/h31h31/H31DHTMgr 国外测试 ...

  2. BAT CMD 批处理文件脚本 -2

    http://checheng1988.blog.51cto.com/4725808/1090733 在很多windows程序中会见到很多用扩展名为.bat和.cmd结尾的文件,那么这些文件能干什么呢 ...

  3. 【BZOJ】【1565】【NOI2009】PVZ 植物大战僵尸

    网络流/最大权闭合子图+拓扑排序 感动死了>_<,一年多以前刚知道网络流的时候听说了这道名字很带感的题目,现在终于有实力切掉它了. 这题是最大权闭合子图模型的经典应用<_<,首 ...

  4. uva 434

    贪心 ~ #include <cstdio> #include <cstdlib> #include <cmath> #include <map> #i ...

  5. Sqrt函数高效实现

    转自一个Sqrt函数引发的血案 我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来 ...

  6. Core Java Interview Question Answer

    This is a new series of sharing core Java interview question and answer on Finance domain and mostly ...

  7. mac上eclipse上配置hadoop

    在mac上安装了eclipse之后,配置hadoop其实跟在linux上配置差不多,只是mac上得eclipse和界面和linux上得有点不同. 一:安装eclipse eclipse得安装比较简单, ...

  8. [三分]HDOJ 5531 Rebuild

    题意:给n个点,以这n个点为圆心画圆,使得所有的圆与其相邻的圆相切. 求n个圆最小的面积和. 分析:很容易想到确定了其中一个圆的半径之后,其他的圆的半径也能随之确定了. 画一画三个点的和四个点的,会发 ...

  9. TopCoder SRM 633div1

    250pts   PeriodicJumping 题意:从起点开始,每次按找数组jump给定的长度,即jump[0], jump[1], jump[2].....jump[n-1], 向各个方向跳,跳 ...

  10. 小米2S 连接Ubuntu Android Studio

    1. 首先打开手机上的开发者选项,USB调试.拨号:*#*#717717#*#*  ,手机会以Toast形式出现“……enable”字样.再次拨号可disable. 2. Ubuntu安装mtpfs: ...