bzoj 1004 burnside 引理+DP】的更多相关文章

对于burnside引理需要枚举染色,这道题属于burnside的一种简单求解的方法,就是polya,我们可以使每一种置换中的循环节中的元素的颜色都相同,那么这样的话就可以直接DP了,我们可以将m个置换单独考虑,处理出当前置换中各个循环节,那么用w[aa][bb][cc]表示在使用了aa个颜色1,bb个颜色2,cc个颜色3时,我们的轨道数,那么我们可以通过背包来累加答案,w[aa][bb][cc]+=w[aa-b[i]][bb][cc] w[aa][bb][cc]+=w[aa][bb-b[i]]…
题目链接:BZOJ - 1004 题目分析 首先,几个定义和定理引理: 群:G是一个集合,*是定义在这个集合上的一个运算. 如果满足以下性质,那么(G, *)是一个群. 1)封闭性,对于任意 a, b 属于 G, a * b 属于 G 2)结合律, a * b * c = a * (b * c) 3)单位元,在 G 中存在一个单位元 e ,使得对于 G 中任意的 a , a * e = e * a = a 4)逆元, 对于 G 中任意的 a ,在 G 中存在 b , 使得 a * b = e ,…
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1004 题意:三种颜色的扑克牌各有Sr,Sb,Sg张.给出m种置换.两种染色方案在某种置换下相同时认为是一种.有多少种不同的排列? 思路:利用Burnside引理计算的两个步骤: (1)找出所有的置换,在这里我们很容易认为只有m种,其实是m+1种,不动置换也是一种.坑爹.. (2)求出每种置换下不动点个数.也就是对于每一种置换,我们要找出在这种置换下哪些排列在置换后还是这样.那么首先我们…
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1004 分析: 1.确定方向:肯定是组合数学问题,不是Polya就是Burnside,然后题目上说每种颜色的个数都是一定的,所以肯定是Burnside了 2.确定置换群:首先输入的那么多肯定是每个都是一个置换,那么要不要对每个叠加呢?不用的,因为题目上说“输入数据保证任意多次洗牌都可用这 m种洗牌法中的一种代替,且对每种洗牌法,都存在一种洗牌法使得能回到原状态”.所以对于读入的所有就是整个置换…
因为有着色数的限制,故使用Burnside引理. 添加一个元置换(1,2,,,n)形成m+1种置换,对于每个置换求出循环节的个数, 每个循环节的长度. 则ans=sigma(f(i))/(m+1) %p  (1<=i<=m+1). 其中f(i)是第i种置换下的不动点个数. 可以用dp来求出f(i), 设第i个置换的循环节个数为T, 令dp[i][j][k]表示前i个循环节中使用了j个红色,k个蓝色的不动点个数.进行一次n^3的DP即可. 最后m+1模p意义下的逆元不再叙述. # include…
题目大意:3种颜色,每种染si个,有m个置换,求所有本质不同的染色方案数. 置换群的burnside引理,还有个Pólya过几天再看看... burnside引理:有m个置换k种颜色,所有本质不同的染色方案数就是每种置换的不变元素的个数的平均数. 求每种置换的不变元素的个数用背包解决.因为置换之后元素不变,所以对于每个循环节我们要染一个颜色,于是先处理出循环节作为背包中的“物体”,然后一个三维背包解决.f[i][j][k]的i j k表示三种颜色分别还可以染多少次. 除m%p用费马小定理就行了,…
分析 Attention!这道题的模数是\(1e8+7\). 注意到循环同构会被认为是同一种方案,我们可以把顺时针旋转每个人的位置作为置换,容易发现这些置换一定会形成一个置换群,于是题目所求的所有合法的方案数便是这个置换群下等价类的数目,可以使用Burnside引理解决. 考虑如何求在置换"顺时针旋转\(x\)位置"下不动点的数目,可以发现这样的不动点的男女排列一定具有周期性,且\(gcd(n,x)\)是它的一个周期,这里可以自行画图理解一下.这样我们又再次简化了题目,我们现在只需考虑…
题目传送门 https://vjudge.net/problem/UVA-11540 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2535(原题页面) 题解 首先如果两棵树经过一定的旋转以后能够重合,我们就称它们同构. 判断树的同构的常见方法是哈希.但是由于子树的先后顺序是有影响的,只有旋转以后相同才算等价,所以我的哈希方法是直接把所有…
题意保证了是一个置换群. 根据burnside引理, 答案为Σc(f) / (M+1). c(f)表示置换f的不动点数, 而题目限制了颜色的数量, 所以还得满足题目, 用背包dp来计算.dp(x,i,j,k) = dp(x,i-cntx,j,k)+dp(x,i,j-cntx,k)+dp(x,i,j,k-cntx)表示前x个置换红蓝绿个用了i,j,k次,cntx表示第x个置换的循环数. 然后最后乘(M+1)的乘法逆元就OK了. -----------------------------------…
标题效果:特定n张卡m换人,编号寻求等价类 数据保证这m换人加上置换群置换后本身构成 BZOJ坑爹0.0 条件不那么重要出来尼玛怎么做 Burnside引理--昨晚为了做这题硬啃了一晚上白书0.0 都快啃吐了0.0 Burnside引理:一个置换群下的等价类个数等于全部置换的不动点个数的平均值 没有接触过群论的建议去啃白书-- 网上的东西看不懂的 最后那个除法要用乘法逆元 我懒得写EXGCD写了费马小定理0.0 #include<cstdio> #include<cstring>…