随笔分类 - -----数论 4.置换群
摘要:题目链接:poj 1721 CARDS 题意: 看了半天才看懂,就是一次置换为b[i]=a[a[i]],a[i]=b[i]。 现在已经知道了置换了多少次和当前的序列,问你最原来的序列为 题解: 将这个置换的循环次数ans找出来,再做ans-s次就行了。 1 #include<cstdio> 2 #i
阅读全文
摘要:题目链接:poj 2369 Permutations 题意: 给你一个置换序列,问你循环周期是多少。 题解: 找到每个子循环周期,总体的循环周期就是这些子循环周期的最小公倍数。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm>
阅读全文
摘要:题目链接:poj 3590 The shuffle Problem 题意: 给你一个数n,让你找一个字典序最小的置换序列,使得变换整个周期最大。 题解: 由于置换群的性质,我们可以将n拆分成m个数,使得这m个数的和为n,并且这m个数的最小公倍数最大。 dp可以求出将n拆分后的最大的最小公倍数。 然后
阅读全文
摘要:题目链接: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
阅读全文
摘要:题目链接:hdu 3923 Invoker 题意: 将n种元素,填在有m个位置的戒指上,问有多少种方案。 能旋转,翻转的算一种。 题解: 通过打表发现,对于x个位置的戒指,旋转i位的循环数为gcd(i,x); 然后对于翻转:考虑m的奇偶性,一共有m条对称轴。 然后就可以直接上快速幂解了。 1 #in
阅读全文
摘要:题目链接:hdu 3430 Shuffling 题意: 给出n张牌,标号为1-n,然后给出两个序列,序列1表示序列1,2,3,4……,n洗一次牌后到达的. 序列2表示目标序列,问初始序列按序列1的洗牌方式洗几次能到达序列2的情况,如果不能到达输出-1. 题解: 在初始序列和序列1的变换中找出1能变到
阅读全文
摘要:题目链接:hdu 1802 Black and white painting 题意: 有一个n*n的格子,然后用c种颜色去涂,问你有多少种方案。 能旋转,反射的算一种方案。 题解: polya定理的经典运用 旋转只有 0,90,180,270度三种旋法。旋0度,则置换的轮换数为n*n旋90度,n为偶
阅读全文
摘要:题目链接: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
阅读全文

浙公网安备 33010602011771号