洛谷 P1446 [HNOI2008]Cards 解题报告
P1446 [HNOI2008]Cards
题目描述
小春现在很清闲,面对书桌上的\(N\)张牌,他决定给每张染色,目前小春只有\(3\)种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.
进一步,小春要求染出\(S_r\)张红色,\(S_b\)张蓝色,\(S_g\)张绿色.他又询问有多少种方案,Sun想了一下,又给出了正确答案. 最后小春发明了\(M\)种不同的洗牌法,这里他又问Sun有多少种不同的染色方案.两种染色方法相同当且仅当其中一种可以通过任意的洗牌法(即可以使用多种洗牌法,而每种方法可以使用多次)洗成另一种.
Sun发现这个问题有点难度,决定交给你,答案可能很大,只要求出答案除以\(P\)的余数(\(P\)为质数).
输入输出格式
输入格式:
第一行输入 \(5\) 个整数:\(S_r,S_b,S_g,m,p(m\le 60,m+1<p<100)\)。\(n=S_r+S_b+S_g\)。接下来 \(m\) 行,每行描述一种洗牌法,每行有 \(n\) 个用空格隔开的整数 \(X_1X_2\dots X_n\),恰为 \(1\) 到 \(n\) 的一个排列,表示使用这种洗牌法,第 \(i\) 位变为原来的 \(X_i\) 位的牌。输入数据保证任意多次洗牌都可用这 \(m\) 种洗牌法中的一种代替,且对每种洗牌法,都存在一种洗牌法使得能回到原状态。
\(100\%\)数据满足 \(\max\{S_r,S_b,S_g\}\le 20\)。
输出格式:
不同染法除以\(P\)的余数
其实这个题的\(DP\)做法应该就是官方正解了,思维难度并不高。
很显然是变换构成了一个群
考虑\(polya\)定理
\]
然后因为每个循环节同色,我们可以直接求循环节然后\(dp\)
注意单位元不给,要自己加上
还有一种比较神奇的做法,发现这个题还给了除群外的一个性质,然后可以得到一个结论,仅单位元有不动点,然后\(Burnside\)直接组合算就可以了,答案就是
\]
然后我并不会证,比较严谨的描述如下,如果谁可以给出证明,烦请私信我一下啦
设\(G=\{\pi_1,\pi_2,\dots,\pi_p\}\)是目标集\([1,n]\)上的置换群,且\(\forall t=\sum \pi_k,\pi_k \in G\),定义\(\sum\)为置换的连接操作,且\(k\)可重,\(\exists t \in G\),求证仅\(G\)的单位元存在不动点。
Code:
#include <cstdio>
const int N=201;
#define mul(a,b) (1ll*(a)*(b)%mod)
int a,b,c,m,mod,fac[N];
int qp(int d,int k){int f=1;while(k){if(k&1)f=mul(f,d);d=mul(d,d);k>>=1;}return f;}
int main()
{
scanf("%d%d%d%d%d",&a,&b,&c,&m,&mod);
for(int x,i=1;i<=m;i++)
for(int j=1;j<=a+b+c;j++)
scanf("%d",&x);
fac[0]=1;
for(int i=1;i<=N;i++) fac[i]=mul(fac[i-1],i);
int ans=mul(fac[a+b+c],mul(qp(fac[a],mod-2),mul(qp(fac[b],mod-2),mul(qp(fac[c],mod-2),qp(m+1,mod-2)))));
printf("%d\n",ans);
return 0;
}
2018.12.21
洛谷 P1446 [HNOI2008]Cards 解题报告的更多相关文章
- 洛谷 P3197 [HNOI2008]越狱 解题报告
P3197 [HNOI2008]越狱 题目描述 监狱有连续编号为\(1-N\)的\(N\)个房间,每个房间关押一个犯人,有\(M\)种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可 ...
- 洛谷P1446 [HNOI2008]Cards
置换群+dp #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring& ...
- 洛谷 P1783 海滩防御 解题报告
P1783 海滩防御 题目描述 WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和仓库总是被敌方派人偷袭 ...
- 洛谷 P4597 序列sequence 解题报告
P4597 序列sequence 题目背景 原题\(\tt{cf13c}\)数据加强版 题目描述 给定一个序列,每次操作可以把某个数\(+1\)或\(-1\).要求把序列变成非降数列.而且要求修改后的 ...
- 洛谷1087 FBI树 解题报告
洛谷1087 FBI树 本题地址:http://www.luogu.org/problem/show?pid=1087 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全 ...
- 洛谷 P3349 [ZJOI2016]小星星 解题报告
P3349 [ZJOI2016]小星星 题目描述 小\(Y\)是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有\(n\)颗小星星,用\(m\)条彩色的细线串了起来,每条细线连着两颗小星星. 有一 ...
- 洛谷 P3177 树上染色 解题报告
P3177 [HAOI2015]树上染色 题目描述 有一棵点数为\(N\)的树,树边有边权.给你一个在\(0\) ~ \(N\)之内的正整数\(K\),你要在这棵树中选择\(K\)个点,将其染成黑色, ...
- 洛谷 P4705 玩游戏 解题报告
P4705 玩游戏 题意:给长为\(n\)的\(\{a_i\}\)和长为\(m\)的\(\{b_i\}\),设 \[ f(x)=\sum_{k\ge 0}\sum_{i=1}^n\sum_{j=1}^ ...
- 洛谷 P1272 重建道路 解题报告
P1272 重建道路 题目描述 一场可怕的地震后,人们用\(N\)个牲口棚\((1≤N≤150\),编号\(1..N\))重建了农夫\(John\)的牧场.由于人们没有时间建设多余的道路,所以现在从一 ...
随机推荐
- mysql 数据库备份和恢复
物理备份对比逻辑备份 物理备份是指直接复制包含数据的文件夹和文件.这种类型的备份适用于大数据量且非常重要,遇到问题需要快速回复的数据库. 逻辑备份保存能够代表数据库信息的逻辑结构(CREATE DAT ...
- 《图解 HTTP 》阅读 —— 第一章
第1章 了解web及网络基础 计算机与网络设备相互通信的规则称为协议,比如:如何探测到通信目标.由哪一边发起通信.使用那种语言进行通信.怎么结束通信等. TCP/IP 协议族按照层次分为以下四层:应用 ...
- 路由器终端常用linux命令汇总(持续更新)
ls:显示文件名与相关属性 ls -al;ls -l;ls -a 第一列: d:表示目录,dir. -:表示文件. l:表示链接文件,linkfile. 接下来的字符三个为一组,且均为rwx这3个字母 ...
- docker node项目 连接mongodb
在弄docker部署node项目的时候遇到了连接mongdb的问题,记录一下问题解决办法 一.Docker 安装 MongoDB 1.查找Docker Hub上的mongo镜像 [root@VM_49 ...
- linq与lambda 常用查询语句写法对比
LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量中被查询的值 [group by 条件] Lambda ...
- 黑客攻防web安全实战详解笔记
如有不足,欢迎指出,谢谢! ----------------------------------------- 1,url传值 GET传值:其传递的值会附加到url上 POST传值:其传递的值不会加 ...
- tee命令详解
基础命令学习目录首页 参考:http://man.linuxde.net/tee tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin.简单的说就是把数据重 ...
- Nginx 使用(server参数配置)
文件地址nginx/conf/Nginx.conf 文件地址;nginx/conf/Nginx.conf [java] view plain copy server {# 服务名及配置,一个服务下可以 ...
- css 文字展示两行 其余的省略号显示
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 第十二节 Linux下软件安装
apt-get:apt-get使用各用于处理apt包的公用程序集,我们可以用它来在线安装.卸载和升级软件包等,下面列出一些apt-get包含的常用的一些工具 常用参数: 重新安装: 软件升级: