ploya专题

10601 - Cubes(Ploya)

UVA 10601 - Cubes 题目链接 题意:给定正方体12条棱的颜色,要求用这些棱能组成多少不同的正方体 思路:利用ploya定理去求解,分类讨论,正方体一共24种旋转,对应的旋转方式有4种: 1、不动 2、沿两面中点连线旋转 3、沿对顶点连线旋转 4、沿两棱中点连线旋转 简单推算出每种情况对应的循环组数,在加上组合数学去进行选择颜色求解,注意第4种情况中,有两条棱和其他

UVA 11255 - Necklace(Ploya)

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

HDU 2865 Birthday Toy(ploya好题)

对于这种颜色多的,但是限制简单的情况,可以利用dp推出公式,然后矩阵快速幂求解 代码: #include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MOD = 1000000007;typedef long long ll;int n, k;int phi(int n) {

POJ 2888 Magic Bracelet(ploya)

跟POJ2154一样的思路,但是这题多了个颜色限制 构造关系矩阵,每次有i个循环节,就做i次矩阵乘法,得到的就是每个颜色经过i步能回到自身的情况数,利用矩阵快速幂就可以快速计算了 代码: #include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MOD = 9973;in

POJ 2154 Color (ploya欧拉函数)

ploya定理,然后公式利用欧拉函数优化,gcd必然是因子,这样只要枚举因子,每个因子利用欧拉函数计算出现次数 代码: #include <cstdio>#include <cstring>#include <algorithm>using namespace std;int t, n, p;int pow_mod(int x, int k) {x %= p;int ans = 1;

nyoj-Color the necklace(Ploya定理 + 欧拉函数 + 扩展欧几里得(求逆元))

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=688 此题题解 不太懂,因为对这些概念,定理太模糊,理解起来比较困难,不过想想还是应该把代码写出来; 题意:给你一个数 n ,代表 n 种颜色和n个珠子,问你可以组合多少种长度为n的项链;不需要用掉n种颜色,项链的旋转和翻转都是为同一条 题解: http://pan.baidu