poj1286 Necklace of Beads【裸polya】

2024-06-17 03:32
文章标签 beads necklace polya poj1286

本文主要是介绍poj1286 Necklace of Beads【裸polya】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

很裸的polya,不过我看polya看了很久

吉大ACM模板里面也有

#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
long long gcd(long long a,long long b)
{return b==0?a:gcd(b,a%b);
}
int main()
{#ifndef ONLINE_JUDGE//freopen("G:/1.txt","r",stdin);//freopen("G:/2.txt","w",stdout);#endiflong long p[33];p[0]=1;for(long long i=1;i<=24;i++){p[i]=p[i-1]*3;//cout<<p[i]<<endl;}long long res=0;long long s;while(cin>>s){if(s==-1)break;if(s==0){cout<<"0\n";continue;}long long res=s&1?s*p[s/2+1]:(s/2)*(p[s/2]+p[s/2+1]);for(long long k=1;k<=s;k++){res+=p[gcd(k,s)];}res/=2*s;cout<<res<<'\n';}return 0;
}


这篇关于poj1286 Necklace of Beads【裸polya】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068363

相关文章

usaco 1.1 Broken Necklace(DP)

直接上代码 接触的第一道dp ps.大概的思路就是 先从左往右用一个数组在每个点记下蓝或黑的个数 再从右到左算一遍 最后取出最大的即可 核心语句在于: 如果 str[i] = 'r'  ,   rl[i]=rl[i-1]+1, bl[i]=0 如果 str[i] = 'b' ,  bl[i]=bl[i-1]+1, rl[i]=0 如果 str[i] = 'w',  bl[i]=b

poj 2154 Color(polya计数 + 欧拉函数优化)

http://poj.org/problem?id=2154 大致题意:由n个珠子,n种颜色,组成一个项链。要求不同的项链数目,旋转后一样的属于同一种,结果模p。 n个珠子应该有n种旋转置换,每种置换的循环个数为gcd(i,n)。如果直接枚举i,显然不行。但是我们可以缩小枚举的数目。改为枚举每个循环节的长度L,那么相应的循环节数是n/L。所以我们只需求出每个L有多少个i满足gcd(

NYOJ 280 LK的项链 POJ 2409 Let it Bead(polya 定理)

NYOJ 280 LK的项链  :click here POJ 2409 Let it Bead:click here 题意:一盒有红、蓝、绿三种颜色的珠子,每种颜色珠子的个数都大于24,现在LK想用这一盒珠子穿出一条项链,项链上的珠子个数为n(0<=n&lt;=24),请你帮她计算一下一共可以用这一盒珠子可以穿出多少条不同的项链。通过旋转、翻转达到同一种状态的被认为是相同的项链。

10054 - The Necklace(欧拉回路+回路打印)

题目:10054 - The Necklace 题目大意:给出N给珠子,每个珠子都有两种颜色,各半,看能不能找出每种组合使珠子连成一串,颜色相同的珠子才能相邻。 解题思路:欧拉回路+ 回路打印。 刚开始的时候我直接以珠子的个数来考虑是否有欧拉回路,这样的话1000*1000 *1000...次判断导致超时了。这里可以判断颜色,颜色都访问过了,就说明这串珠子是连通的。然后要输出的时

POJ3270 cow sorting 【polya】

题目描述: 给你一个数字序列(每个数字唯一),每次你可以交换任意两个数字,代价为这两个数字的和,问最少用多少代价能把这个序列按升序排列好。 题目的具体做法是参考刘汝佳的《算法艺术与信息学奥赛》大概思路是:以后再用别种方法解, 1.找出初始状态和目标状态。明显,目标状态就是排序后的状态。 2.画出置换群,在里面找循环。例如,数字是8 4 5 3 2 7 明显,

POJ 2409 Let it bead 【裸polya】

和1286一样,裸polya,可以在吉大模板找到,polya可能要看一会儿 #include <cstdio>#include <cmath>#include <iostream>using namespace std;long long gcd(long long a,long long b){return b==0?a:gcd(b,a%b);}int main(){#if

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都是循环节数 下面考虑手镯 旋转翻

2016 Multi-University Training Contest 1-1005---HDU 5727 Necklace(枚举+二分图匹配)

题目链接:HDU 5727 题意:有一些 宝石,分为阴阳两种,且数量相等,要串成一条项链,并且阴阳宝石不能相邻。同时,有一些阳宝石与特定的阴宝石相邻则会使得其变得暗淡无光。给出这些规则要求最少有多少个阳宝石会变得暗淡无光。 题解 : 其实就是一个阴阳宝石怎么交错摆放的问题,很容易想到通过DFS去搜索枚举,但是直接阴 阳交错搜索的话,时间复杂度太高。因此我们首先选取一种宝石(假设为阴),枚举所

hdu 4633 Who's Aunt Zhang(polya)

题目链接:hdu 4633 Who’s Aunt Zhang 代码 #include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int mod = 10007;int inv24, P[100];int pow_mod(int x, int n, int mod) {int ret =

UVA 11255 - Necklace(Ploya)

UVA 11255 - Necklace 题目链接 题意:一个链子,由三种颜色的珠子构成,现在给定三种颜色的珠子个数,求能组成多少种(旋转,翻转算同一种) 思路:利用ploya定理,然后分类讨论即可 代码: #include <cstdio>#include <cstring>typedef long long ll;const int N = 45;int t, a