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\)定理

\[\frac{1}{|G|}\sum_{\pi \in G}m^{w(\pi)}
\]

然后因为每个循环节同色,我们可以直接求循环节然后\(dp\)

注意单位元不给,要自己加上

还有一种比较神奇的做法,发现这个题还给了除群外的一个性质,然后可以得到一个结论,仅单位元有不动点,然后\(Burnside\)直接组合算就可以了,答案就是

\[\frac{(a+b+c)!}{a!b!c!(m+1)}
\]

然后我并不会证,比较严谨的描述如下,如果谁可以给出证明,烦请私信我一下啦

设\(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 解题报告的更多相关文章

  1. 洛谷 P3197 [HNOI2008]越狱 解题报告

    P3197 [HNOI2008]越狱 题目描述 监狱有连续编号为\(1-N\)的\(N\)个房间,每个房间关押一个犯人,有\(M\)种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可 ...

  2. 洛谷P1446 [HNOI2008]Cards

    置换群+dp #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring& ...

  3. 洛谷 P1783 海滩防御 解题报告

    P1783 海滩防御 题目描述 WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和仓库总是被敌方派人偷袭 ...

  4. 洛谷 P4597 序列sequence 解题报告

    P4597 序列sequence 题目背景 原题\(\tt{cf13c}\)数据加强版 题目描述 给定一个序列,每次操作可以把某个数\(+1\)或\(-1\).要求把序列变成非降数列.而且要求修改后的 ...

  5. 洛谷1087 FBI树 解题报告

    洛谷1087 FBI树 本题地址:http://www.luogu.org/problem/show?pid=1087 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全 ...

  6. 洛谷 P3349 [ZJOI2016]小星星 解题报告

    P3349 [ZJOI2016]小星星 题目描述 小\(Y\)是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有\(n\)颗小星星,用\(m\)条彩色的细线串了起来,每条细线连着两颗小星星. 有一 ...

  7. 洛谷 P3177 树上染色 解题报告

    P3177 [HAOI2015]树上染色 题目描述 有一棵点数为\(N\)的树,树边有边权.给你一个在\(0\) ~ \(N\)之内的正整数\(K\),你要在这棵树中选择\(K\)个点,将其染成黑色, ...

  8. 洛谷 P4705 玩游戏 解题报告

    P4705 玩游戏 题意:给长为\(n\)的\(\{a_i\}\)和长为\(m\)的\(\{b_i\}\),设 \[ f(x)=\sum_{k\ge 0}\sum_{i=1}^n\sum_{j=1}^ ...

  9. 洛谷 P1272 重建道路 解题报告

    P1272 重建道路 题目描述 一场可怕的地震后,人们用\(N\)个牲口棚\((1≤N≤150\),编号\(1..N\))重建了农夫\(John\)的牧场.由于人们没有时间建设多余的道路,所以现在从一 ...

随机推荐

  1. java事务 深入Java事务的原理与应用

    一.什么是JAVA事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (iso ...

  2. Netty源码分析第3章(客户端接入流程)---->第3节: NioSocketChannel的创建

    Netty源码分析第三章: 客户端接入流程 第三节: NioSocketChannel的创建 回到上一小节的read()方法: public void read() { //必须是NioEventLo ...

  3. Docker 入门之docker容器创建

    使用docker容器的大多数人都是因为想要隔离不同运行环境的差异,使得自己的应用能更好的移植和部署.那么我们来看看掌握docker需要掌握哪些方面. 1,搭建docker环境 2,编译镜像并将其运行成 ...

  4. 带你轻而易举的学习python——八皇后问题

    首先我们来看一下这个著名的八皇后问题 八皇后问题:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 在这个问题提出之后人们又将 ...

  5. React Native iOS 离线包

    平时使用React Native 时候, js代码和图片资源运行在一个Debug Server上(需要cd 到RN目录,然后终端执行 npm start 命令开启本地服务 ).每次更新代码之后只需要使 ...

  6. <s:action>的一些用法

    Action标签,顾名思义,是用来调用Action的标签,在JSP中页面中,可以具体指定某一命名空间中的某一Action.而标签的主体用于显示及渲染Actionr的处理结果. action标签有如下几 ...

  7. 团队作业8——测试与发布(Beta阶段)之展示博客

    展示博客 1. 团队成员的简介和个人博客地址,团队的源码仓库地址. a.陈福鹏 擅长技术:java.web等网站方面技术: 博客:http://www.cnblogs.com/royalchen/b. ...

  8. angularJS1笔记-(13)-自定义指令(controller和controllerAs实现通信)

    index.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  9. windows下的C++ socket服务器(1)

    windows下的一个C++ socket服务器,用到了C++11的相关内容,现在还不是很完善,以后会不断改进的! #include <winsock2.h>//1 以后会用这种方式对特定 ...

  10. [转贴] IPSEC From 知乎

    作者:埃文科技链接:https://zhuanlan.zhihu.com/p/44874772来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 认识IPSec IPSec ...