`

POJ 2049

 
阅读更多

题意:一串由n个珠子组成的项链,用c种颜色涂染,问能形成多少种不同项链。

限制:旋转得来的为同一种,翻转得来的也为同一种。

运用polya定理解题。

Polya定理

    设有n个对象,G是这n个对象上的置换群,用m种颜色涂染这n个对象,每个对象涂染一种颜色,问有多少种染色方案?一种染色方案在群G的作用下变为另一种方案,则这两种方案当作是一种方案。

针对本题分两种情况讨论:
旋转:
n种旋转方法每种旋转i个格(1<=i<=n)循环结有gcd(i,n)个
翻转:

(1)这种是经过某个顶点i与中心的连线为轴的翻转,由于n为偶数,有对称性,所以此种共n/2种翻转:

(2)这种是以顶点i和i+1的连线的中点与中心的连线为轴的翻转,同样,根据对称性,也有n/2种翻转:

所以给定长度n,共有2n种置换。

代码如下:

#include<iostream> 
#include<fstream> 
#include<cmath> 

using namespace std; 

int gcd(int s,int t){ 
    if(t==0) return s; 
    return gcd(t,s%t); 
} 
int m,n; 

void read(){ 
	//  ifstream cin("in.txt"); 
    int i,j,k; 
     long ans; 
    while(1){ 
        cin>>m>>n; 
        if(n==0&&m==0) 
            return; 
        ans=0; 
        for(i=0;i<n;i++) 
            ans+=pow(1.*m,gcd(n,i)); 
        if(n%2==0) 
            ans+=n/2*pow(1.*m,n/2)+n/2*pow(1.*m,n/2+1); 
        else
            ans+=n*pow(1.*m,n/2+1); 
        cout<<ans/n/2<<endl; 
    } 
	
} 

int main(){ 
    read(); 
    return 0; 
}

 

分享到:
评论

相关推荐

    acm poj300题分层训练

    如poj3278、poj2049、poj3083是图遍历的例子,poj1860、poj3259等则是最短路径问题,poj1789、poj2485等则涉及最小生成树。 3. **数据结构**:包括串、排序、简单并查集、哈希表、二分查找、哈夫曼树和堆。poj1035、...

    poj推荐50题

    - **1129** 和 **2049** 可以帮助进一步加深对搜索的理解。 - **2056** 和 **2488** 这两个题目则提供了不同的挑战,特别是 **2492** 还提供了一个使用并查集的替代方案,这对于想要拓宽思路的学习者来说非常有用。 ...

    NOIP NOI 信息学竞赛 ACM-ICPC POJ(北京大学在线评测系统)刷题推荐 OI复习计划 算法大纲

    推荐题目如1011、1033、1129、2049、2056、2488、2492等,其中2492可以考虑使用并查集解决。 3. **贪心**(Greedy) 贪心算法在每一步选择局部最优解,期望达到全局最优。推荐题目有1065、2054、1521、2709等,...

    算法学习攻略

    2. **搜索算法**:包括深度优先搜索(DFS)和广度优先搜索(BFS),如1011、1033、1129、2049和2056等,其中2488和2492难度较高,可以挑战。 3. **贪心算法**:贪心策略是在每一步选择中都采取当前状态下最好或最优...

    PKU 的一些搜索题目

    - **POJ 1069、3322、1475、1924、2049、3426**等题目,这些题目可能是关于广度优先搜索(BFS)的应用,旨在训练学生对于基础搜索算法的理解和应用能力。 #### 2. 训练状态搜索: M洢״̬תΪhashءλѹ洢״̬텔ѡA*...

Global site tag (gtag.js) - Google Analytics