UVA 12103 - Leonardo's Notebook
题目链接
题意:给定一个字母置换B,求是否存在A使得A^2=B
思路:任意一个长为 L 的置换的k次幂,会把自己分裂成gcd(L,k) 分, 并且每一份的长度都为 L / gcd(l,k),因此平方对于奇数长度不变,偶数则会分裂成两份长度相同的循环,因此如果B中偶数长度的循环个数不为偶数必然不存在A了
代码:
...
分类:
其他好文 时间:
2014-07-18 15:12:10
阅读次数:
300
习题4.证明:置换群$G$中若含有奇置换,则$G$必有指数为$2$的子群.证明 易知$G$中若有奇置换,则奇偶置换各半.不妨设$G$的偶置换为$${\rm id}=\sigma_{1},\sigma_{2},\cdots,\sigma_{m}$$而奇置换$\phi_{1},\cdots,\phi_....
分类:
其他好文 时间:
2014-07-18 09:28:39
阅读次数:
521
TDL的YC牌传说中的置换群?反正不懂。我的思路竟然是对的,可是为何只有20分?(1)尼玛每行数据输出后回车不打!(2)写gcd函数脑残把a mod b写成a-b,大大减慢速度…(3)看标程才想到用快速幂,第一次知道置换也可以快速幂。(4)大小姐啊麻烦你下次看数据范围别把0的个数给数错的……果然什么...
分类:
其他好文 时间:
2014-07-16 21:24:33
阅读次数:
237
假设初始状态为
a:2 3 1 5 4 6
则目标状态为
b:1 2 3 4 5 6且下标为初始状态中的3 1 2 4 5 6(a[3],a[1]...)
将置换群写成循环的形式
(2,3,1),(5,4),6就不用移动了。
移动方式2种
1:选循环内最小的数和其他len-1个数交换
2:选整个序列最小的数和循环内最小的数交换,转到1,再换回来。
#include
#inclu...
分类:
其他好文 时间:
2014-07-01 15:50:03
阅读次数:
243
题目描述:
给你一个数字序列(每个数字唯一),每次你可以交换任意两个数字,代价为这两个数字的和,问最少用多少代价能把这个序列按升序排列好。
题目的具体做法是参考刘汝佳的《算法艺术与信息学奥赛》大概思路是:以后再用别种方法解,
1.找出初始状态和目标状态。明显,目标状态就是排序后的状态。
2.画出置换群,在里面找循环。例如,数字是8 4 5 3 2 7
明显, ...
分类:
其他好文 时间:
2014-06-28 08:07:33
阅读次数:
183
暗了一下polya和burnside定理,感觉还行(就是不会证……)这题用的是burnsideans=在每个置换群下不动的方案数之和除以置换数这题有个难点在取模关于对p(p为素数)取模(涉及到了除法),我总结了两种方法:已知x mop p=y,要求x/z mod p=?大体思路是利用乘法逆,将/z转...
分类:
其他好文 时间:
2014-06-24 10:00:03
阅读次数:
210
http://poj.org/problem?id=1721
大致题意:原始序列通过洗牌机洗牌s次后变为当前序列,已知当前序列,求原始序列。
在置换群快速幂运算 研究与探讨中最后有详解,有两种解法,一种是求出置换的长度a(即一副牌洗a次后变回原来的位置),现已知原始序列置换s次变为当前序列,那么当前序列再置换a-s次就是原始序列了。求a就是直接模拟每个置换的过程,直到某序列与当...
分类:
其他好文 时间:
2014-06-18 12:14:44
阅读次数:
203
http://poj.org/problem?id=3128
大致题意:输入一串含26个大写字母的字符串,可以把它看做一个置换,判断这个置换是否是某个置换的平方。
思路:详解可参考置换群快速幂运算
研究与探讨。
可以先正着考虑一个置换的平方出现什么情况。对于置换中的循环,若其长度为偶数,平方以后一定分成了两个长度相等的循环,若长度是奇数,平方以后仍是一个循环,长度不变。因...
分类:
其他好文 时间:
2014-06-17 23:13:25
阅读次数:
291
题意:1-n的一个排列 p1,?p2,?...,?pn,f(p)的定义是此排列要交换最少的数对可以回到原排列1,2,3,4...n。给一个排列p,要将其变换成f值为m的排列,问至少要交换几个数对,并输出字典序最小的那组答案。
解法:处理出所有的置换群,求出环数k,此时f值为n-k。然后判断n-k和m的大小,分为两种操作
1、加环,这个是在任意元素个数大于1的环...
分类:
其他好文 时间:
2014-06-10 14:53:43
阅读次数:
183
http://poj.org/problem?id=1026
大致题意:给出数字n和一个1~n的序列num[]。然后给出若干个字符串,让字符串的下标i和num[i]交换,问交换K次后得到的字符串是什么。输入的字符串长度小于等于n,若小于n就用空格来补。
例如样例1
4 5 3 7 2 8 1 6 10 9
H e L L o B o b ' ' ' '
...
分类:
其他好文 时间:
2014-06-10 14:50:20
阅读次数:
213