数论-群论
lab104_yifan
这个作者很懒,什么都没留下…
展开
-
UVA 12103 - Leonardo's Notebook(数论置换群)
UVA 12103 - Leonardo's Notebook题目链接题意:给定一个字母置换B,求是否存在A使得A^2=B思路:任意一个长为 L 的置换的k次幂,会把自己分裂成gcd(L,k) 分, 并且每一份的长度都为 L / gcd(l,k),因此平方对于奇数长度不变,偶数则会分裂成两份长度相同的循环,因此如果B中偶数长度的循环个数不为偶数必然不存在A了代码:原创 2014-07-18 12:26:42 · 1777 阅读 · 0 评论 -
UVA 11255 - Necklace(Ploya)
UVA 11255 - Necklace题目链接题意:一个链子,由三种颜色的珠子构成,现在给定三种颜色的珠子个数,求能组成多少种(旋转,翻转算同一种)思路:利用ploya定理,然后分类讨论即可代码:#include #include typedef long long ll;const int N = 45;int t, a, b, c, n;原创 2014-08-08 17:28:40 · 1165 阅读 · 0 评论 -
UVA 11330 - Andy's Shoes(置换分解)
UVA 11330 - Andy's Shoes题目链接题意:andy有很多双鞋子,每双鞋子有一个编号,现在他把鞋子左右左右放回去,可是不能保证所有鞋子左边和右边是同一编号,现在要求用最少的交换次数,使得所有鞋子左右编号相同思路:置换的分解,固定左边的鞋子,这样右边的鞋子就可以看成是放在哪个位置,然后根据这个求出每个循环的长度,最后每个循环长度-1的总和就是答案代码原创 2014-08-08 16:17:46 · 1581 阅读 · 0 评论 -
UVA 1016 - Silly Sort(置换分解+贪心)
UVA 1016 - Silly Sort题目链接题意:给定一个序列,数字都不同,每次可以交换两个数字,交换的代价为两数之和,要求出把这个序列变成递增最小代价思路:利用置换的分解原理,可以把序列的每条循环单独考虑,对于每条循环而言,不断交换肯定每个数字至少会换到一次,再利用贪心的思想,如果每次拿循环中的最小值去置换,那么就是这个最小值会用长度-1次,而剩下的数字各一次,注意原创 2014-08-08 18:39:06 · 1617 阅读 · 0 评论 -
UVA 716 - Commedia dell' arte(三维N数码问题)
UVA 716 - Commedia dell' arte题目链接题意:给定一个三维的n数码游戏,要求变换为按顺序,并且最后一个位置是空格,问能否变换成功思路:和二维的判定方法一样,因为z轴移动,等于交换N^2 - 1次,y轴移动等于交换N - 1次,x轴移动不变,逆序对的奇偶性改变方式不变。那么n为偶数的时候,逆序对为偶数可以,为奇数不行n为奇数时候,看空格位原创 2014-08-08 21:11:20 · 1179 阅读 · 0 评论 -
UVA 239 - Tempus et mobilius. Time and motion(置换周期)
UVA 239 - Tempus et mobilius. Time and motion题目链接题意:这题题意也是吊得飞起,看了老半天,大概是这样:有一个放球的队列,和3个轨道(说白了就是栈),一个容纳5,1个12,1个12,每1分钟队列出一个小球,放入栈,如果放入5的满了,就把5的放回队列,头一个放入12的,如果12的满了,就把12的放回队列,头一个放入另一个12的栈,如果原创 2014-07-19 23:18:12 · 1045 阅读 · 0 评论 -
10601 - Cubes(Ploya)
UVA 10601 - Cubes题目链接题意:给定正方体12条棱的颜色,要求用这些棱能组成多少不同的正方体思路:利用ploya定理去求解,分类讨论,正方体一共24种旋转,对应的旋转方式有4种:1、不动2、沿两面中点连线旋转3、沿对顶点连线旋转4、沿两棱中点连线旋转简单推算出每种情况对应的循环组数,在加上组合数学去进行选择颜色求解,注意第4种情况中,原创 2014-07-18 22:13:44 · 1485 阅读 · 0 评论 -
10294 - Arif in Dhaka (First Love Part 2) (数论置换)
UVA 10294 - Arif in Dhaka (First Love Part 2)题目链接题意:给定n个珠子,t种颜色, 问能组成几个项链和手镯(手镯能翻转,项链不能)思路:利用Burnside求解,推理出旋转的循环个数是gcd(i, n),翻转的分为奇偶情况考虑代码:#include #include const int N = 30;in原创 2014-07-18 12:23:04 · 1134 阅读 · 1 评论 -
UVA 1156 - Pixel Shuffle(模拟+置换)
UVA 1156 - Pixel Shuffle题目链接题意:根据题目中的变换方式,给定一串变换方式,问需要执行几次才能回复原图像思路:这题恶心的一比,先模拟求出一次变换后的对应的矩阵,然后对该矩阵求出所有循环长度,所有循环长度的公倍数就是答案代码:#include #include const int N = 1100;int t, n, g[N]原创 2014-07-18 17:43:30 · 1549 阅读 · 0 评论 -
UVA 10733 - The Colored Cubes(Ploya)
UVA 10733 - The Colored Cubes题目链接题意:一个立方体,n种颜色,问能涂成多少不同立方体思路:Ploya求解,正方体对应24种不同旋转一一计算出循环个数即可,和 UVA 10601 - Cubes这题类似代码:#include #include unsigned long long n;int main() { w原创 2014-07-19 13:10:23 · 1253 阅读 · 0 评论 -
UVA 11077 - Find the Permutations(递推)
UVA 11077 - Find the Permutations题目链接题意:给定n,k求出有多少个包含元素[1-n]的序列,交换k次能得到一个[1,2,3...n]的序列思路:递推dp[i][j]表示i个元素需要j次,那么在新加一个元素的时候,添在最后面次数不变,其余位置都是次数+1,这是可以证明的,原序列中有几个循环,需要的次数就是所有循环长度-1的和,那么对于新加一原创 2014-07-18 12:56:23 · 1019 阅读 · 0 评论 -
HDU 4985 Little Pony and Permutation(置换)
HDU 4985 Little Pony and Permutation题目链接题意:给定一个置换,输出分解成的循环水题,直接模拟即可代码:#include #include #include #include using namespace std;const int N = 100005;int n, a[N], vis[N];int原创 2014-09-01 15:01:24 · 972 阅读 · 0 评论