UVA 10294 等价类计数

题目大意:

项链和手镯都是若干珠子穿成的环形首饰,手镯可以旋转和翻转,但项链只能旋转,给n个珠子,t种颜色,求最后能形成的手镯,项链的数量

这里根据等价类计数的polya定理求解

对于一个置换f,若一种方案经过置换后不改变,那么不改变的点的个数记作C(f)

统计所有的C(f) , 相加之后求和除以置换的种数即可

那么这道题里面

对于项链来说,旋转一个角度,也就是2*PI/n , 那么置换群可表示为

1 2 3 4 .... n

2 3 4 5 ... 1

这里就存在一个循环节

所以方案数为 t^1

自己 写着会发现,循环节的个数就是旋转数和总数的gcd值

那么不动点的个数就是 sigma(t^(gcd(i,n))

对于手镯除了上述情况,还有翻转

对于 n 为奇数,翻转对称轴有n条,这样置换形成的循环节有 (n+1)/2

对于 n 为偶数,翻转对称轴有n条,n/2条是不经过点的,这样置换形成的循环节有 (n)/2

n/2条经过两个点的,这样置换形成的循环节有 (n)/2+1

 1 #include <cstdio>
 2 #include <cstring>
 3
 4 using namespace std;
 5 #define ll unsigned long long
 6 int n , t;
 7 ll pow[51];
 8
 9 int gcd(int a , int b){return b==0?a:gcd(b , a%b);}
10
11 void init()
12 {
13     pow[1] = t;
14     for(int i=2 ; i<=n ; i++) pow[i] = pow[i-1]*t;
15 }
16 int main()
17 {
18   //  freopen("in.txt" , "r" , stdin);
19     while(~scanf("%d%d" , &n , &t)){
20         init();
21         ll a=0 , b=0;
22         for(int i=1 ; i<=n ; i++){
23             a += pow[gcd(i , n)];
24         }
25         if(n&1) b+= pow[(n+1)/2]*n;
26         else{
27             b+=(n/2)*(pow[n/2]+pow[n/2+1]);
28         }
29         printf("%lld %lld\n" , a/n , (a+b)/2/n);
30     }
31 }
时间: 2024-10-12 21:03:48

UVA 10294 等价类计数的相关文章

UVa 10294 (P&#243;lya计数) Arif in Dhaka (First Love Part 2)

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个置换,每个置换的不动点有t

uva 10294 - Arif in Dhaka (First Love Part 2)(置换)

题目链接:uva 10294 - Arif in Dhaka (First Love Part 2) 题目大意:项链和手镯都是由若珠子穿成的环形首饰,区别在于手镯可以翻转,但是项链不行.给定n和t,表示用t种颜色的n个珠子能制作的项链和手镯的个数. 解题思路:等价类计数,一共两种置换,旋转或者翻转. 旋转:枚举间距0,1,2,3-,n?1,所以不动点a=∑i=0n?1tgcd(n,i) 翻转:当n为奇数时,对称轴有n条,每条对称轴形成n?12个长度为2的循环和一个长度为1的循环,所以不动点b1=

UVa 10294 Arif in Dhaka (First Love Part 2) Polya定理

题目来源:UVa 10294 Arif in Dhaka (First Love Part 2) 题意:n颗珠子t种颜色 求有多少种项链和手镯 项链不可以翻转 手镯可以翻转 思路:Polya定理  题目就是求等价类 项链只能旋转 手镯可以旋转也可以翻转 根据定理 等价类的数量等于各个置换f的t^m(f)的平均数 m(f)是置换的循环节数 下面每次t^x x都是循环节数 下面考虑手镯 旋转翻转都算 对于旋转 可以旋转0,1,...,n-1 每一个置换的循环节为gcd(0,n), gcd(1,n),

UVA 10294 Arif in Dhaka (First Love Part 2) Polya计数

题目链接 Polya计数入门题 10294 Arif in Dhaka (First Love Part 2) Our hero Arif is now in Dhaka (Look at problem 10244 – First Love if you want to know more about Arif, but that information is not necessary for this problem. In short, Arif is a brilliant progr

「不会」等价类计数

完全忘了TnT 然而这种类型的题目好像没考过.. 先复习一下万能的burnside引理, 啊不先复习一下定义(有些是本蒻自己yy的可能并不准确) 一个物体:被染色的对象 一个元素:一种染色方案 一个置换\(g\):一种让物体交换位置的变换方法 一个置换群\(G\):里面的置换满足封闭性结合律单位元逆元 一个循环(对于一个置换i来说的):不停地用一个置换作用于所有物体,物体呈现循环运动的轨迹(数目记为\(h_i\)) 一个不动点(对于一个置换i来说的):被该置换作用后,不发生改变的一个元素(数目记

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

Description Problem L Arif in Dhaka (First Love Part 2) Input: standard input Output: standard output Time Limit: 2 seconds Our hero Arif is now in Dhaka (Look at problem 10244 – First Love if you want to know more about Arif, but that information is

UVA 10294 Arif in Dhaka (置换polya)

[题目链接]:click here~~ [题目大意]: 给你一串珠子(连接成了一个环),共有n个珠子组成,你有t种颜色,现在你来给这个珠子染色,问染成项链有多少种方法?染成手镯有多少种方法?在项链里,经过顺时针旋转后相同的算一个,在手镯里,经过顺时针旋转或者沿着对称轴兑换后一样的算一个.即不同之处在于项链不能够反转,而手镯可以反转. [思路]: 首先,我们来看看两个很有用的关于置换的定理,第一个就是Burnside 描述为:对于置换f,一种着色方案s经过一种置换后不变,则称这种着色方案s是f的不

置换群(等价类计数)

一.定义 群 ??群是啥???我不会啊 置换(\(g\)) ??一个置换是一种运算,代表让物体交换位置的一种方法 置换群(\(G\)) ??顾名思义,由置换构成的群 k不动置换类(\(Z_k\))(稳定化子) ??使元素 \(k\) 不改变位置的群的集合 等价类(\(E_k\))(轨道) ??在置换群 \(G\) 作用下元素 \(k\) 的运动轨迹(一些点的集合) 循环(\(h_g\)) ??在置换 \(g\) 作用下产生的循环 轨道-稳定化子定理 \[|E_k|\times|Z_k|=|G|\

UVa 12627 (递归 计数 找规律) Erratic Expansion

直接说几个比较明显的规律吧. k个小时以后,红气球的个数为3k. 单独观察一行: 令f(r, k)为k个小时后第r行红气球的个数. 如果r为奇数,f(r, k) = f((r+1)/2, k-1) * 2 如果r为偶数,f(r, k) = f(r/2, k-1) 令g(r, k)为k个小时后前r行红气球的个数. 如果r为偶数,g(r, k) = g(r/2, k-1) * 3; 如果r为奇数,g(r, k) = g(r-1, k) + f(r, k); 因此f和g都可以用递归求解. 1 #inc