Description

给出 \(n\) 张牌,要求染出 \(a\) 种红色,\(b\) 种蓝色,\(c\) 种zyz之色绿色。同时给出 \(m\) 种洗牌方法,两种染色方案相同当且仅当可以通过洗牌从一种方案变成另一种方案。问有多少不同的染色方案。输入数据保证任意多次洗牌都可用这m种洗牌法中的一种代替,且对每种洗牌法,都存在一种洗牌法使得能回到原状态。

\(n\leq 60\)。

Solution

题目的保证非常吼啊,如果再加上“不动”这个置换就形成了一个群啊。

由 \(burnside\) 引理,我们只需要求出每种置换的不动点即可。

感性理解一下,除了“不动”这个置换,其它置换都没有不动点。

于是答案变成了多重集合的排列除以 \(m+1\)。

Code

#include<bits/stdc++.h>
using std::min;
using std::max;
using std::swap;
using std::vector;
typedef double db;
typedef long long ll;
#define pb(A) push_back(A)
#define pii std::pair<int,int>
#define all(A) A.begin(),A.end()
#define mp(A,B) std::make_pair(A,B)int a,b,c,n,m,mod;int getint(){int X=0,w=0;char ch=getchar();while(!isdigit(ch))w|=ch=='-',ch=getchar();while( isdigit(ch))X=X*10+ch-48,ch=getchar();if(w) return -X;return X;
}int fac(int x){int ans=1;for(int i=2;i<=x;i++) (ans*=i)%=mod;return ans;
}int ksm(int a,int b,int ans=1){while(b){if(b&1) ans=ans*a%mod;a=a*a%mod;b>>=1;} return ans;
}signed main(){a=getint(),b=getint(),c=getint(),m=getint(),mod=getint();printf("%d\n",fac(a+b+c)*ksm(fac(a),mod-2)%mod*ksm(fac(b),mod-2)%mod*ksm(fac(c),mod-2)%mod*ksm(m+1,mod-2)%mod);return 0;
}

转载于:https://www.cnblogs.com/YoungNeal/p/10300614.html

[HNOI2008] Cards相关推荐

  1. [HNOI2008]Cards

    1004: [HNOI2008]Cards Time Limit: 10 Sec  Memory Limit: 162 MB [Submit][Status][Discuss] Description ...

  2. P1446 [HNOI2008]Cards

    P1446 [HNOI2008]Cards 题意: 有n张牌,染三种颜色,每种颜色规定数目,给出m种不同的洗牌方法.两种染色方法相同当且仅当其中一种可以通过任意的洗牌法(即可以使用多种洗牌法,而每种方 ...

  3. 置换群burnside引理(bzoj 1004: [HNOI2008]Cards)

    置换群: 看半天置换群表示并看不懂QAQ 但顾名思义是置换组成的群 其实不用看懂也行,就拿简单的例子来说吧 有一个序列s = {1, 2, 3, 4, 5, 6} 和一个变换规则t = {2, 3, ...

  4. [bzoj1004][HNOI2008]Cards

    [bzoj1004][HNOI2008]Cards 标签: 置换 Burnside引理 题目链接 扯淡 题目中说了这样一句话 两种染色方法相同当且仅当其中一种可以通过任意的洗牌法(即可以使用多种洗牌法 ...

  5. bzoj 1004: [HNOI2008]Cards

    /**************************************************************Problem: 1004User: lxy8584099Language ...

  6. 【BZOJ】1004: [HNOI2008]Cards(置换群+polya+burnside)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1004 学习了下polya计数和burnside引理,最好的资料就是:<Pólya 计数法的应用 ...

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

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

  8. BZOJ 1004: [HNOI2008]Cards [Polya 生成函数DP]

    传送门 题意:三种颜色,规定使用每种颜色次数$r,g,b$,给出一个置换群,求多少种不等价着色 $m \le 60,\ r,g,b \le 20$ 咦,规定次数? <组合数学>上不是有生成 ...

  9. 信奥中的数学:母函数

    [HDU1085][HDU1028][HDU2013] 组合数学入门(母函数.递推) [HDU1085][HDU1028][HDU2013] 组合数学入门(母函数.递推)_Dango's happy ...

最新文章

  1. 漫画 | 人到中年,一地鸡毛
  2. 一说“并发”就想到“多线程”,那就局限了
  3. 开发函数计算的正确姿势——支持 ES6 语法和 webpack 压缩
  4. 拒绝暴力调参!推荐一个模型Debug神器!
  5. mysql 5.5 client 字符集_rhel4 mysql5.5 字符集_character set
  6. 花了一个月时间梳理了一下公司的微服务核心架构,原来也不是太难...
  7. (转)正则表达式在ORACLE中的使用
  8. oracle mseq,一次RMAN备份报错的诊断过程(一)
  9. mongoDB 3.0以前版本 - 入门指南、示例
  10. 30岁学python有前途吗-我30岁了,转行学编程可以吗? 排除法告诉你答案
  11. Android MediaPlayer 属性
  12. Elasticsearch创建索引别名
  13. 靶机渗透日记 noob
  14. 记一次血淋淋的MySQL崩溃修复案例
  15. vue的网站用puppeteer做seo
  16. Java初学者零基础分章学习后续
  17. 用ec怎么修改网络服务器数值,ec服务器
  18. 2021年危险化学品经营单位安全管理人员考试报名及危险化学品经营单位安全管理人员找解析
  19. 。。。。。。。。。。。。。
  20. internal/modules/cjs/loader.js:584

热门文章

  1. Struts2 单个文件上传/多文件上传
  2. BZOJ2584 : [Wc2012]memory
  3. 根据当前时间判断上午好、下午好
  4. R语言入门第四集 实验三:数据可视化
  5. NameError: name 'go' is not defined
  6. xp 安装mysql数据库_Windows XP系统中安装MySQL5.5.28数据库图文教程
  7. django部署iiswin10_基于Windows平台的Django在本地部署和腾讯云服务器上部署的方法教程(一)...
  8. python中tolist_python - 无法使用Gremlinpython使用“ .toList()”列出Janusgraph中存在的所有顶点 - 堆栈内存溢出...
  9. 注册app短信验证平台_短信验证码平台能免费测试吗?怎么测试?
  10. 粽子机器人视频教程_包粽子服务机器人的制作方法