15145641

随笔分类 -  置换群

POJ 2888 Magic Bracelet (Burnside + 矩阵加速dp)
摘要:额,这个题也做了好几天了,中间停停断断的…… 一开始写是超时,想到了正确的思路,用dp[i][j]代表到i个珠子颜色为j的方案数,但是超时了,因为我细节处理的太差,我先枚举了初始状态,然后又枚举了结束状态,多了两个m,因为我想的是判断最后一个和第一个的关系,但其实完全可以让矩阵帮助我多做一次运算,找 阅读全文
posted @ 2017-11-26 20:42 icode-xiaohu 阅读(278) 评论(0) 推荐(0)
UVA 10601 Cubes (Burnside引理)
摘要:这个题目跟UVA 项链的题目是一样的,同样适用Burnside定理计数,3*3*3魔方旋转是一个经典旋转模型,有4种旋转方案,对着魔方转一下最好 #include<iostream> #include<cstdio> #include<cstring> using namespace std; #d 阅读全文
posted @ 2017-11-23 21:06 icode-xiaohu 阅读(319) 评论(0) 推荐(0)
UVA 11255 Necklace (BurnSide定理)
摘要:题意: 分给出a,b,c个颜色各不相同的珠子,穿成一条长度为a+b+c的项链,在翻转和旋转的条件下,能够形成多少等价类。 分析: 这题有数量限制,所以直接搬Polya公式不行,需要用到Burnside的定理L = (Z1 + Z2 + .... Zk) / |G| (Zk为置换gk(gk∈G)的方案 阅读全文
posted @ 2017-11-23 14:23 icode-xiaohu 阅读(374) 评论(0) 推荐(0)
POJ 2154 Color (Polya计数)
摘要:题意:给你N种颜色的珠子,个数不限,串成一个长度为N的项链,经过旋转以后,问能形成多少等价类 分析:套用Polya定理的计数公式即可,题目中的旋转操作可以形成N个置换,假设旋转了i个珠子,那么这个置换的置换环个数为gcd(i,N),但是这里N比较大,需要枚举N的所有因子然后欧拉函数优化。这个题当时我 阅读全文
posted @ 2017-11-19 17:16 icode-xiaohu 阅读(172) 评论(0) 推荐(0)
POJ 1721 CARDS(置换开方)
摘要:这个题目的做法有很多种,大部分选择了找循环节的做法,但是个人感觉这样的做法有点暴力,所以使用了置换开方的做法来解决这个问题,时间复杂度O(n)。 首先评价一波:是个好题! 然后开始分析:给你N张卡片和一个洗牌机,如果位置I上的牌是J,位置J上的牌是K,那么洗牌一次后位置I上的牌就是K。首先建立一个位 阅读全文
posted @ 2017-11-19 16:58 icode-xiaohu 阅读(424) 评论(0) 推荐(0)