题意

PDF

分析

用n颗宝石串成项链和手镯, 每颗宝石的颜色可以t种颜色中的一种,当A类项链经过旋转得B类项链时,A和B属于一类项链, 而手镯不仅可以旋转还可以翻转,当A类手镯经过翻转得得到B类手镯时A和B属于一类手镯,问这n颗宝石,t种颜色,可以串成多少种项链和手镯?

解法:

首先将n颗宝石按顺时针方向编号1,2,3,4,5,6......n

  1. 旋转,当顺时针旋转i颗宝石时, 可以得到一个置换,且这个置换的个数为 (n*i)/gcd(n,i)/i ;由对称性可知 每个循环的阶均相同,故共有gcd(n,i)个不相交循环。此时置换的不动点为 C(f)=t^(gcd(n,i))
  2. 翻转,当n为奇数时,共有(n-1)/2个对称轴,每个对称轴对应一个置换,每个置换包含(n-1)/2个阶为2的循环,一个阶为一的循环,此时C(f)=t^( (n+1)/2 ); 当n为偶数时,不过点的对称轴为n/2个,过点的对称轴有n/2-1, 对于每个不过点的对称轴形成一个置换,包含n/2个阶为2的循环,此时C(f)=t^(n/2); 对于过点的每条对称轴形成一个置换,每个置换包含(n-2)/2个阶为2的循环,两个阶为1的循环,C(f)=t^(n/2+1);
  3. 根据ploy定理,等价类的个数为所有置换不动点的平均值。

时间复杂度\(O(n \log n)\)

代码

#include<iostream>
#include<algorithm>
#define rg register
#define il inline
#define co const
template<class T>il T read(){
rg T data=0,w=1;rg char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') w=-1;ch=getchar();}
while(isdigit(ch)) data=data*10+ch-'0',ch=getchar();
return data*w;
}
template<class T>il T read(rg T&x) {return x=read<T>();}
typedef long long ll; co int maxn=51;
int n,t;
ll pow[maxn],a,b;
int main(){
// freopen(".in","r",stdin),freopen(".out","w",stdout);
while(~scanf("%d%d",&n,&t)){
pow[0]=1;
for(int i=1;i<=n;++i) pow[i]=pow[i-1]*t;
a=0;
for(int i=0;i<n;++i) a+=pow[std::__gcd(i,n)];
b=0;
if(n&1) b=n*pow[(n+1)/2];
else b=n/2*(pow[n/2+1]+pow[n/2]);
printf("%lld %lld\n",a/n,(a+b)/2/n);
}
return 0;
}

UVA10294 Arif in Dhaka (First Love Part 2)的更多相关文章

  1. [Uva10294]Arif in Dhaka

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

  2. UVA10294 Arif in Dhaka (First Love Part 2) —— 置换、poyla定理

    题目链接:https://vjudge.net/problem/UVA-10294 题解: 白书P146~147. 为什么旋转i个间距,就有gcd(i,n)个循环,且每个循环有n/gcd(i,n)个元 ...

  3. UVA10294 Arif in Dhaka (群论,Polya定理)

    UVA10294 Arif in Dhaka (群论,Polya定理) 题意 : 给你一个长为\(n\)的项链和手镯,每个珠子有\(m\)种颜色. 两个手镯定义为相同,即它们通过翻转和旋转得到一样的手 ...

  4. Uva10294 Arif in Dhaka (置换问题)

    扯回正题,此题需要知道的是置换群的概念,这点在刘汝佳的书中写的比较详细,此处不多做赘述.此处多说一句的是第二种手镯的情况.在下图中“左图顺时针转1个位置”和“右图顺时针旋转5个位置”是相同的,所以在最 ...

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

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

  6. UVa 10294 (Pólya计数) Arif in Dhaka (First Love Part 2)

    Burnside定理:若一个着色方案s经过置换f后不变,称s为f的不动点,将置换f的不动点的数目记作C(f).等价类的数目等于所有C(f)的平均值. 一个项链,一个手镯,区别在于一个能翻转一个不能,用 ...

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

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

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

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

  9. Arif in Dhaka (First Love Part 2) UVA - 10294(Polya定理)

    这题和POJ-1286一样 题意: 给出t种颜色的n颗珠子 (每种颜色的珠子个数无限制,但总数必须是n), 求能制作出项链和手镯的个数 注意手镯可以翻转和旋转  而 项练只能旋转 解析: 注意Poly ...

随机推荐

  1. SpringBoot document notes

    图片拷贝不过来,直接从github上下载 . 链接: https://github.com/DFX339/SpringBootDocumentNotes.git Create a example po ...

  2. 阿里云服务器上安装mysql的详细步骤

    阿里云安装mysql (1)下载mysql安装包,去mysql官网下载对应的包 mysql数据库官方下载网址:   https://downloads.mysql.com/archives/commu ...

  3. Linux搭建Hadoop集群---Jdk配置

    三台虚拟机:master slave1 slave2 192.168.77.99 master 192.168.77.88 slave1 192.168.77.77 slave2   1.修改主机名: ...

  4. Linux学习 :移植linux-3.4.83到JZ2440开发板

    一.编译环境搭建: 1.linux源码下载:https://www.kernel.org/ (最新)  https://mirrors.edge.kernel.org/pub/linux/kernel ...

  5. Spring实现Ioc的多种方式--控制反转、依赖注入、xml配置的方式实现IoC、对象作用域

    Spring实现Ioc的多种方式 一.IoC基础 1.1.概念: 1.IoC 控制反转(Inversion of Control) IoC是一种设计思想. 2.DI 依赖注入 依赖注入是实现IoC的一 ...

  6. android 广播 接收短信

    ; i < messages.length; i++) { SmsMessage ms = SmsMessage.createFromPdu((byte[])pdus[i]); String f ...

  7. centos7安装maven,git

    1.maven 下载 2.安装包 解压 3.配置maven环境变量 4.检查是否安装成功 5.检查是否安装 git 6.yum 安装 git 7.配置 git 环境变量 8.检查git是否安装成功 1 ...

  8. oracle概要文件profile详解

    一.目的: Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该prof ...

  9. iOS 获取当前正在显示的ViewController

    //获取当前屏幕显示的viewcontroller - (UIViewController *)getCurrentVC { UIViewController *result = nil; UIWin ...

  10. Diamorphine rootkit的使用

    仅作LKM rootkit研究之用,滥用后果自负. 查看支持版本是否为2.6.x/3.x/4.x: uname -r 下载代码: git clone https://github.com/m0nad/ ...