群论第一题。

发现这题也是有颜色个数限制的,所以不能用$Polya$,只能用$Burnside$

$L={\frac{1}{|G|}}{\sum_{i=1}^{m}{D(a_{i})}}$

先$dfs$出每个循环节长度,每个循环节颜色需要一样,$dp$就好了。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define N 105
using namespace std;
int n,m,mod,na,nb,nc,nn,ans;
int num[N],sum[N],f[N][N][N],fa[N],fac[N];
bool vis[N];
void dfs(int x,int now){
vis[x]=;num[now]++;
if(!vis[fa[x]])dfs(fa[x],now);
}
int qp(int a,int b){
int c=;
while(b){
if(b&)c=c*a%mod;
a=a*a%mod;b>>=;
}
return c;
}
int C(int a,int b){
if(b<||b>a)return ;
if(!b||a==b)return ;
return fac[a]*qp(fac[b],mod-)%mod*qp(fac[a-b],mod-)%mod;
}
int main(){
scanf("%d%d%d%d%d",&na,&nb,&nc,&m,&mod);
n=na+nb+nc;
fac[]=;
for(int i=;i<=;i++)fac[i]=fac[i-]*i%mod;
for(int t=;t<=m;t++){
for(int i=;i<=n;i++)
scanf("%d",&fa[i]);
memset(vis,,sizeof vis);
memset(num,,sizeof num);
memset(f,,sizeof f);
nn=;
for(int i=;i<=n;i++)
if(!vis[i]){
dfs(i,++nn);
sum[nn]=sum[nn-]+num[nn];
}
f[][][]=;
for(int i=;i<=nn;i++){
for(int j=;j<=na;j++){
if(j>sum[i-])break;
for(int k=;k<=nb;k++){
if(j+k>sum[i-])break;
int l=sum[i-]-j-k;
if(l>nc)break;
if(j+num[i]<=na)f[i][j+num[i]][k]+=f[i-][j][k];
if(k+num[i]<=nb)f[i][j][k+num[i]]+=f[i-][j][k];
if(l+num[i]<=nc)f[i][j][k]+=f[i-][j][k];
}
}
}
ans+=f[nn][na][nb];
}
(ans+=C(n,na)*C(n-na,nb))%=mod;
(ans*=qp(m+,mod-))%=mod;
printf("%d\n",ans);
return ;
}

最新文章

  1. 我所理解的RESTful Web API [Web标准篇]
  2. Android项目部署时,发生AndroidRuntime:android.view.InflateException: Binary XML file line #168: Error inflating class错误
  3. stanford NLP学习笔记3:最小编辑距离(Minimum Edit Distance)
  4. rdlc报表DEMO
  5. eclips中增加对jar包的引用
  6. win7上帝模式
  7. openStack opts
  8. memset 初始化数组
  9. OC基础17:归档
  10. D3.js:动态效果
  11. 201521123012 《Java程序设计》第十二周学习总结
  12. ORM(四)字段参数
  13. JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
  14. day04 list tuple
  15. ELT(数据仓库技术) 学习
  16. Windows 10下安装配置Caffe并支持GPU加速(修改版)
  17. ssm项目中KindEditor的图片上传插件,浏览器兼容性问题
  18. 记账本微信小程序开发五
  19. centos6.7环境半虚拟化软件xen及xm配置工具使用详解
  20. 【SpringCloud微服务实战学习系列】服务治理Spring Cloud Eureka

热门文章

  1. 全面解读Java NIO工作原理(4)
  2. Spring2.5整合Ibatis入门级开发实例
  3. Xshell 5 配置上传下载命令
  4. Tornado、Bottle以及Flask
  5. React+ANTD项目使用后的一些关于生命周期比较实用的心得
  6. js判断是否下拉刷新
  7. 构建具有用户身份认证的 Ionic 应用
  8. github routine
  9. C++之Binary Heap/Max Heap
  10. java虚拟机的内存分配