UVA10294 Arif in Dhaka (First Love Part 2)

本文是刘汝佳《算法竞赛入门经典——训练指南》的读书笔记。

解题思路:

  对于项链,它只支持旋转置换;而手镯支持旋转和翻转。下面由这两种置换来研究本题。

  旋转

  设顺时针旋转 \(i\) 颗珠子的间距,则珠子 \(0, i, 2i, ...\) 构成一个循环。

  设每个循环有 \(t\) 颗珠子,则这 \(t\) 颗珠子的编号分别为:\(0, (i \mod n), (2i \mod n), ... [(t-1)i \mod n]\),我们不能推出:\(ti \mod n = 0\),即 \(ti = nk, k \in Z\).则\(ti = nk\) 的最小值为 \(lcm(i,n)\),故由 \(ti = nk = lcm(i,n)\) 得

  \(ti = \frac{in}{gcd(i,n)}\)

  \(t = \frac{n}{gcd(i,n)}\)

  则循环数为\(\frac{n}{t} = gcd(i,n)\).

  不动点总数为 \(a = \sum_{i=0}^{i=n-1} t^{gcd(i,n)}\).

翻转

  分 \(n\) 为奇数偶数两种情况讨论:

  若 \(n\) 为奇数,则对称轴有 \(n\) 条,每条对称轴形成 \(\frac{n-1}{2}\) 个二元循环和 \(1\) 个一元循环,其总循环数为  \(\frac{n+1}{2}\).  不动点总数为 \(b = nt^{\frac{n+1}{2}}\).

  若 \(n\) 为偶数,对称轴有两种,一种穿过两个对点,这种对称轴形成 \(2\) 个一元循环和 \(\frac{n}{2} - 1\) 个二元循环;一种是穿过两条对边的中点,这种对称轴形成 \(\frac{n}{2}\) 个二元循环。两种对称轴都有 \(\frac{n}{2}\) 条,则不动点总数为  \(b = \frac{n}{2}(t^{\frac{n}{2}}+t^{\frac{n}{2}+1})\).

  则项链数为 \(\frac{a}{n}\),手镯数为 \(\frac{a+b}{2n}\).

AC代码:

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4 typedef long long ll;
 5 ll pows[100];
 6 ll gcd(ll a,ll b){
 7     if(b==0)    return a;
 8     return gcd(b,a%b);
 9 }
10 int main(){
11     ll n,t;
12     while(scanf("%lld%lld",&n,&t)==2){
13         ll xuan=0;
14         pows[0]=1;
15         for(int i=1;i<=n;i++)   pows[i]=pows[i-1]*t;
16         for(ll i=0;i<n;i++){
17             ll g=gcd(i,n);
18             xuan+=pows[g];
19         }
20         ll fan=0;
21         if(n%2==1)
22             fan=pows[(n+1)/2]*n;
23         else
24             fan=(pows[n/2]+pows[n/2+1])*n/2;
25         printf("%lld %lld\n",xuan/n,(fan+xuan)/(2*n));
26
27     }
28
29
30     return 0;
31 }

原文地址:https://www.cnblogs.com/Blogggggg/p/8452718.html

时间: 2024-10-10 01:38:33

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

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

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),

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

UVA 10294 - Arif in Dhaka (First Love Part 2) 题目链接 题意:给定n个珠子,t种颜色, 问能组成几个项链和手镯(手镯能翻转,项链不能) 思路:利用Burnside求解,推理出旋转的循环个数是gcd(i, n),翻转的分为奇偶情况考虑 代码: #include <stdio.h> #include <string.h> const int N = 30; int t, next[N], vis[N], num[N]; char str[N

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 (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 (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 (置换polya)

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

《算法竞赛入门经典——训练指南》第二章题库

UVa特别题库 UVa网站专门为本书设立的分类题库配合,方便读者提交: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=442 注意,下面注有"extra"的习题并没有在书中出现,但在上面的特别题库中有,属于附加习题. 基础练习 (Basic Problems) UVa11388 GCD LCM UVa11889 Benefit UVa10943 How do y

noip专题复习之数学(6)——置换及其应用

1.基本概念: 简单来说,置换就是把n个元素做一个全排列.比如1,2,3,4分别变成3,1,2,4,或者分别变成4,3,2,1.一般地,1变a1,2变a2,...的置换记为: \[ \left( \begin{matrix} 1 & 2\cdots & n\a_1 & a_2\cdots & a_n\\end{matrix} \right) \] 置换实际上就是一一映射, ? (1)可以用一个数组f={a1,a2,...,an}来表示1~n的一个置换,其中f[i]表示元素i