随笔分类 -  -----数论 4.置换群

摘要:题目链接:poj 1721 CARDS 题意: 看了半天才看懂,就是一次置换为b[i]=a[a[i]],a[i]=b[i]。 现在已经知道了置换了多少次和当前的序列,问你最原来的序列为 题解: 将这个置换的循环次数ans找出来,再做ans-s次就行了。 1 #include<cstdio> 2 #i 阅读全文
posted @ 2017-06-24 22:04 bin_gege 阅读(163) 评论(0) 推荐(0)
摘要:题目链接:poj 2369 Permutations 题意: 给你一个置换序列,问你循环周期是多少。 题解: 找到每个子循环周期,总体的循环周期就是这些子循环周期的最小公倍数。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 阅读全文
posted @ 2017-06-24 20:28 bin_gege 阅读(128) 评论(0) 推荐(0)
摘要:题目链接:poj 3590 The shuffle Problem 题意: 给你一个数n,让你找一个字典序最小的置换序列,使得变换整个周期最大。 题解: 由于置换群的性质,我们可以将n拆分成m个数,使得这m个数的和为n,并且这m个数的最小公倍数最大。 dp可以求出将n拆分后的最大的最小公倍数。 然后 阅读全文
posted @ 2017-06-24 19:56 bin_gege 阅读(155) 评论(0) 推荐(0)
摘要:题目链接:hdu 1817 Necklace of Beads 这题的弱化版:传送门 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using namespace std; 4 typedef long lo 阅读全文
posted @ 2017-06-23 20:06 bin_gege 阅读(107) 评论(0) 推荐(0)
摘要:题目链接:hdu 3923 Invoker 题意: 将n种元素,填在有m个位置的戒指上,问有多少种方案。 能旋转,翻转的算一种。 题解: 通过打表发现,对于x个位置的戒指,旋转i位的循环数为gcd(i,x); 然后对于翻转:考虑m的奇偶性,一共有m条对称轴。 然后就可以直接上快速幂解了。 1 #in 阅读全文
posted @ 2017-06-23 19:58 bin_gege 阅读(129) 评论(0) 推荐(0)
摘要:题目链接:hdu 3430 Shuffling 题意: 给出n张牌,标号为1-n,然后给出两个序列,序列1表示序列1,2,3,4……,n洗一次牌后到达的. 序列2表示目标序列,问初始序列按序列1的洗牌方式洗几次能到达序列2的情况,如果不能到达输出-1. 题解: 在初始序列和序列1的变换中找出1能变到 阅读全文
posted @ 2017-06-22 23:28 bin_gege 阅读(189) 评论(0) 推荐(0)
摘要:题目链接:hdu 1802 Black and white painting 题意: 有一个n*n的格子,然后用c种颜色去涂,问你有多少种方案。 能旋转,反射的算一种方案。 题解: polya定理的经典运用 旋转只有 0,90,180,270度三种旋法。旋0度,则置换的轮换数为n*n旋90度,n为偶 阅读全文
posted @ 2017-06-22 17:32 bin_gege 阅读(194) 评论(0) 推荐(0)
摘要:题目链接:hdu 1439 Cipher 题意: 给你一个n元的key,让你将一个字符串置换k次。 题解: 暴力将每个数的循环数找到,然后k%后对应填字符就行了。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 阅读全文
posted @ 2017-06-22 12:01 bin_gege 阅读(249) 评论(0) 推荐(0)