第一次学习置换群这个东西。

这题需要利用Burnside定理。

即我们求出循环节为一(转完不变)的个数的平均数也就是等价类的个数。

定义:设G={a1,a2,…ag}是目标集[1,n]上的置换群。每个置换都写成不相交循环的乘积。 c1(ak) 是在置换ak 的作用下不动点的个数,也就是长度为1的循环的个数(其实就是被置换ak 置换过后位置不变的元素个数)。通过上述置换的变换操作后可以相等的元素属于同一个等价类。若G将[1,n]划分成L个等价类,则:

等价类个数为:

证明:http://blog.csdn.net/gengmingrui/article/details/50564027

这样我们就相当于求每一种置换有多少不同的使得转完后不变的方案数,利用01背包可求。

而转完不变的意思就是转完后颜色还是原来的颜色。

然后答案是在mod p意义下的所以要用逆元。

By:大奕哥

 #include<bits/stdc++.h>
using namespace std;
int sr,sb,sg,m,p,n;
int e[][],size[],f[][][];
bool v[];
int dp(int x)
{
memset(f,,sizeof(f));
memset(size,,sizeof(size));
memset(v,,sizeof(v));
int cnt=;
for(int i=;i<=n;++i)
{
if(v[i])continue;
cnt++;int p=e[x][i];
while(!v[p])size[cnt]++,v[p]=,p=e[x][p];
}
f[][][]=;
for(int i=;i<=cnt;++i)
for(int SR=sr;SR>=;SR--)
for(int SB=sb;SB>=;SB--)
for(int SG=sg;SG>=;SG--)
{
if(SR>=size[i])f[SR][SB][SG]=(f[SR][SB][SG]+f[SR-size[i]][SB][SG])%p;
if(SB>=size[i])f[SR][SB][SG]=(f[SR][SB][SG]+f[SR][SB-size[i]][SG])%p;
if(SG>=size[i])f[SR][SB][SG]=(f[SR][SB][SG]+f[SR][SB][SG-size[i]])%p;
}
return f[sr][sb][sg];
}
int quick_mod(int a,int b)
{
int ans=;
while(b)
{
if(b&)ans=ans*a%p;
a=a*a%p;b>>=;
}
return ans;
}
int main()
{
scanf("%d%d%d%d%d",&sr,&sb,&sg,&m,&p);n=sb+sr+sg;
for(int i=;i<=m;++i)
for(int j=;j<=n;++j)
scanf("%d",&e[i][j]);
++m;int ans=;
for(int i=;i<=n;++i)e[m][i]=i;
for(int i=;i<=m;++i)
ans=(ans+dp(i))%p;
ans=(ans*quick_mod(m,p-))%p;
printf("%d\n",ans);
return ;
}

BZOJ1004 HNOI Cards的更多相关文章

  1. 【BZOJ1004】Cards(组合数学,Burnside引理)

    [BZOJ1004]Cards(组合数学,Burnside引理) 题面 Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Su ...

  2. [BZOJ1004](HNOI 2008) Cards

    Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目 前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张 ...

  3. bzoj1004 [HNOI2008]Cards 置换群+背包

    [bzoj1004][HNOI2008]Cards 2014年5月26日5,3502 Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿 ...

  4. [BZOJ1004] [HNOI2008]Cards解题报告(Burnside引理)

    Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红 ...

  5. BZOJ1004 [HNOI2008]Cards 【burnside定理 + 01背包】

    题目链接 BZOJ1004 题解 burnside定理 在\(m\)个置换下本质不同的染色方案数,等于每种置换下不变的方案数的平均数 记\(L\)为本质不同的染色方案数,\(m\)为置换数,\(f(i ...

  6. BZOJ1004: [HNOI2008]Cards

    三维01背包算出在每一个置换下不变的染色方案数,Burnside引理计算答案. PS:数据太水所以只算恒等置换也是可以过的. #include<bits/stdc++.h> using n ...

  7. BZOJ1004 [HNOI2008]Cards(Polya计数)

    枚举每个置换,求在每个置换下着色不变的方法数,先求出每个循环的大小,再动态规划求得使用给定的颜色时对应的方法数. dp[i][j][k]表示处理到当前圈时R,B,G使用量为i,j,k时的方法数,背包思 ...

  8. [BZOJ1004] [HNOI2008] Cards (Polya定理)

    Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红 ...

  9. BZOJ1004 HNOI2008 Cards Burnside、背包

    传送门 在没做这道题之前天真的我以为\(Polya\)可以完全替代\(Burnside\) 考虑\(Burnside\)引理,它要求的是对于置换群中的每一种置换的不动点的数量. 既然是不动点,那么对于 ...

随机推荐

  1. 【CodeForces】576 C. Points on Plane

    [题目]C. Points on Plane [题意]给定坐标系中n个点的坐标(范围[0,10^6]),求一种 [ 连边形成链后总长度<=2.5*10^9 ] 的方案.n<=10^6. [ ...

  2. jQuery 页面加载初始化

    jQuery 页面加载初始化的方法有3种 ,页面在加载的时候都会执行脚本,应该没什么区别,主要看习惯吧,本人觉得第二种方法最好,比较简洁. 第一种: $(document).ready(functio ...

  3. Verilog笔记.1.基本语法

    0.前 抽象模型分级: • 系统级(system):用高级语言结构实现设计模块的外部性能的模型.• 算法级(algorithm):用高级语言结构实现设计算法的模型.• RTL级(Register Tr ...

  4. MongoDB 3.4.2 配置 CentOS 6.5 远程连接

    1.新建用户 db.createUser({user: 'test', pwd: 'myPassword', roles: [{role: 'readWrite', db: 'test_db'}]}) ...

  5. MySQL join 用法

    select column1, column2 from TABLE1 join TABLE2 on 条件 # select * from table1 join table2; #两个表合成一个se ...

  6. juery给所有ID属性相同的div绑定一个事件

    案例: <div id="div1">内容</div> <div id="div1">内容</div> < ...

  7. OC学习篇之---类的延展

    来源:http://blog.csdn.net/jiangwei0910410003/article/details/41775603 前一篇文章我们介绍了类的类目概念和使用:http://blog. ...

  8. git版本控制系统常见操作总结

    简介 Git是强大的版本控制系统,主要功能是针对代码.配置文件等文本进行版本控制.备份等,同时个人认为还是分发代码的一个不错的方式. 常见用法 #创建远程git仓库 [root@test88 ~]# ...

  9. nginx allow 多个ip & ipv4的网段表示方法解析

    参考:https://www.baidu.com/link?url=5aVe_syihQzhHnSDAdLsNNQYqDe_W2GYG1GeIQ130e4mEZbusxQfqGVTdg-dJg8fqM ...

  10. [ python ] 练习作业 - 3

    1. 写出Python查找一个变量的顺序 提示:4中作用域的顺序 本地作用域(local) --> 当前作用域被嵌入的本地作用域(enclsing locals) --> 全局/模块作用域 ...