博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ 1004][HNOI2008]Cards(Polya定理/Burnside引理)
阅读量:6320 次
发布时间:2019-06-22

本文共 1824 字,大约阅读时间需要 6 分钟。

Description

小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有

多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红色,Sb张蓝色,Sg张绝色.他又询问有多少种方
案,Sun想了一下,又给出了正确答案. 最后小春发明了M种不同的洗牌法,这里他又问Sun有多少种不同的染色方案.
两种染色方法相同当且仅当其中一种可以通过任意的洗牌法(即可以使用多种洗牌法,而每种方法可以使用多次)洗
成另一种.Sun发现这个问题有点难度,决定交给你,答案可能很大,只要求出答案除以P的余数(P为质数)

Solution

Polya学习了一个

用背包来求每种置换的不动点数

(一开始忘记加不变的那种置换了…)

#include
#include
#include
#include
using namespace std;int n,sr,sb,sg,m,p,a[65][65],b[65],f[25][25][25],ans=0;bool vis[65];void exgcd(int a,int b,int& d,int& x,int& y){ if(!b){d=a,x=1,y=0;return;} exgcd(b,a%b,d,y,x);y-=x*(a/b);}int inv(int a,int p){ int d,x,y; exgcd(a,p,d,x,y); return (x+p)%p;}int dp(int cnt){ memset(f,0,sizeof(f)); f[0][0][0]=1; for(int i=1;i<=cnt;i++) for(int j=sr;j>=0;j--) for(int k=sb;k>=0;k--) for(int l=sg;l>=0;l--) { f[j][k][l]=0; if(j>=b[i])f[j][k][l]=(f[j][k][l]+f[j-b[i]][k][l])%p; if(k>=b[i])f[j][k][l]=(f[j][k][l]+f[j][k-b[i]][l])%p; if(l>=b[i])f[j][k][l]=(f[j][k][l]+f[j][k][l-b[i]])%p; } return f[sr][sb][sg];}int main(){ scanf("%d%d%d%d%d",&sr,&sb,&sg,&m,&p); n=sr+sb+sg; for(int i=1;i<=m+1;i++) { if(i!=m+1) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); else{ for(int j=1;j<=n;j++) a[i][j]=j; } memset(vis,0,sizeof(vis)); int cnt=0; for(int j=1;j<=n;j++) { if(!vis[j]) { vis[j]=1;b[++cnt]=1; int t=a[i][j]; while(t!=j) {vis[t]=1;b[cnt]++;t=a[i][t];} } } ans=(ans+dp(cnt))%p; } ans=(ans*inv(m+1,p))%p; printf("%d\n",ans); return 0;}

 

转载于:https://www.cnblogs.com/Zars19/p/6711309.html

你可能感兴趣的文章
Shiro 学习笔记(二)——shiro身份验证
查看>>
JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据(转)
查看>>
你不是真正的快乐
查看>>
201707舆情分析系统代码
查看>>
C#在自定义事件里传递自定义数据,使用EventArgs的姿势
查看>>
Memcached常用命令及使用说明
查看>>
Asp.net 前后台操作cookie 实现数据的循环下载
查看>>
MyGeneration学习笔记(9) :在WebService使用dOOdad时,对ToXml/FromXml的一点改进
查看>>
[开发笔记]MySQL & Python经验两则
查看>>
Delphi IDE 之 Object Inspector (对象检查器)
查看>>
关于母版页的按钮事件
查看>>
Using script to submit INV Manager to process MTI/MMTT
查看>>
.net 前台判断
查看>>
【转】.gitignore失效的解决办法
查看>>
中风后遗症当首重治郁——高建忠
查看>>
Linux wget命令
查看>>
QButtonGroup:按钮类的非可视化容器,默认可实现按钮的子类实例的单选。
查看>>
a web-based music player(GO + html5)
查看>>
Python -- 函数对象
查看>>
Task Schedule
查看>>