codeforces 140E.New Year Garland
传送门:
解题思路:
要求相邻两行小球颜色集合不同,并且限制行内小球相邻不同。
由此可得:每行小球排列都是独立与外界的,
所以答案应该是对于所有行的颜色集合分类,在将行内的答案乘到上面。
先考虑如何分类:
我们可以确定对于每行所取的颜色种类$x=|S|$,
若相邻两行$i,j$,其$x_i!=x_j$,那么一定是合法的,有$C_m^x$种选择方法。
而对于相邻两行$x_i=x_j$,对于行$i$的一种方案,只有一种可能使得$S_i=S_j$,
所以可以使用容斥来计算答案
综上所述,按照每行的颜色种类数来分类或许是可行的。
所以说我们表示出答案:
设该行共用$x$种颜色的方案数为$f(x)$,$f(x)$是对于所有的种类进行计数的,所以可以直接与颜色数为$x$的其他计数变量相乘,设第$n$行中颜色为$i$对整体的贡献为$ans_{n,i}$则:
$ans_n=C_m^x*f(x)*ans_{n-1}-f(x)*ans_{n-1,j}$
$ans_n=\sum\limits_{c=1}^{l_n}ans_{n,c}$
用函数$g_{i,j}$表示就是$ans_i=\sum g_{i,j}$表示前$i$行中最后一行用$j$个颜色方案数。
行间计数搞定了,就该考虑如何计算$f(x)$
由于刚才设$f(x)$为该行的方案数。这个看起来不太好求。
考虑什么决定了这个方案数。
是该行的球数以及颜色数。
所以不妨改写一下,$f(i,j)$表示用了$i$个球,共$j$种颜色的方案数,那么第$i$行的$f(x)$重写为$f(l_i,x)$
考虑一个一个来添加球,由于要求和前一个颜色不同,即可获得递推式:
$f(i,j)=f(i-1,j-1)+f(i-1,j)*(j-1)$
由于每次用到没有用过的颜色顺序是有序的,而所求的是对球颜色顺序无要求,那么最后使用的时候应写成:
$j!*f(i,j)$
球颜色数不会多于总数,那么$f(i,j)$,可以用二维数组来储存
最后一个问题就是p不是质数不能直接用逆元。
难不成要用拓展Lucas?
组合数可以提出来:
那么答案就是:
$g_{i,j}=A_{m}{j}*f(i,j)*\sum{g_{i-1}}-j!*f(i,j)*g_{i-1,j}$
其中$f_{(i,j)},j!,A_m^j$预处理就可以很愉快地A掉这道题目了
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
typedef long long lnt;
lnt n,m,p;
lnt lmax;
lnt Am[];
lnt fac[];
lnt l[];
lnt f[][];
lnt g[][];
int main()
{
scanf("%lld%lld%lld",&n,&m,&p);
fac[]=Am[]=f[][]=;
for(int i=;i<=n;i++)
scanf("%lld",&l[i]),lmax=std::max(lmax,l[i]);
for(int i=;i<=lmax;i++)Am[i]=Am[i-]*(m-i+)%p;
for(int i=;i<=lmax;i++)fac[i]=fac[i-]*i%p;
for(int i=;i<=lmax;i++)for(int j=;j<=i&&j<=m;j++)
f[i][j]=(f[i-][j-]+f[i-][j]*(j-))%p;
lnt ans=,sum=;
for(int i=;i<=n;i++)
{
for(int j=;j<=l[i];j++)
{
lnt tmp=(Am[j]*ans-g[i&^][j]*fac[j])%p;
g[i&][j]=f[l[i]][j]*tmp%p;
sum+=g[i&][j];
}
ans=(sum%p+p)%p;
sum=;
memset(g[i&^],,sizeof(g[]));
}
printf("%lld\n",ans);
return ;
}
codeforces 140E.New Year Garland的更多相关文章
- CodeForces - 140E:New Year Garland (组合数&&DP)
As Gerald, Alexander, Sergey and Gennady are already busy with the usual New Year chores, Edward has ...
- codeforces problem 140E New Year Garland
排列组合题 题意 用m种颜色的彩球装点n层的圣诞树.圣诞树的第i层恰由l[i]个彩球串成一行,且同一层内的相邻彩球颜色不同,同时相邻两层所使用彩球的颜色集合不同.求有多少种装点方案,答案对p取模. 只 ...
- 【codeforces 758B】Blown Garland
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 1.23 codeforces div3 C.Nice Garland
You have a garland consisting of nn lamps. Each lamp is colored red, green or blue. The color of the ...
- Codeforces 758B:Blown Garland(模拟)
http://codeforces.com/problemset/problem/758/B 题意:给出一个字符串,每4个位置对应一个颜色,如果为‘!’的话,代表该灯泡是坏的,问最后每个颜色坏的灯泡的 ...
- CF codeforces A. New Year Garland【Educational Codeforces Round 79 (Rated for Div. 2)】
A. New Year Garland time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces 140E(排列组合、dp)
要点 主要学到的东西:一个序列染色,相邻不染同色,恰用\(j\)种颜色的1.模式数.2.方案数.3.具体染色数. 从大的思路上来讲:先dp预处理出每一层的模式数:\(f[i][j]\)表示\(i\)个 ...
- Codeforces 392 B Blown Garland
题意:输入是由连续的RYGB和字符!组成的字符串,R代表红灯,Y代表黄灯,G代表绿灯,B代表蓝灯.简而言之,就是给定的字符串保证了下标对4取余相同的灯颜色都相同,但是有的地方为‘!’代表这个灯坏了,然 ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
随机推荐
- js时间格式化函数,支持Unix时间戳
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- Cube Simulation zoj3429 模拟
Description Here's a cube whose size of its 3 dimensions are all infinite. Meanwhile, there're 6 pro ...
- Zico源代码分析:执行启动过程分析和总结
事实上已经有童鞋对Zico的源代码和执行过程进行了总结,比如:http://www.cnblogs.com/shuaiwang/p/4522905.html.这里我再补充一些内容. 当我们使用mvn ...
- nodejs02
Node.js没有根目录的概念,因为它根本没有任何的web容器! 让node.js提供一个静态服务,都非常难! 也就是说,node.js中,如果看见一个网址是 1127.0.0.1:3000/fang ...
- Windows10+VS2013+caffe+Python2.7+CUDA8.0 部署配置
所需环境工具: 1. Windows 10 2. VS2013 3. Windows版本的caffe工具包,地址:https://github.com/Microsoft/caffe 4. Anaco ...
- [学习笔记]AJAX学习
AJAX学习 ——在w3cschool学习AJAX的学习笔记 参考网站:w3cschool XMLHttpRequest 是 AJAX 的基础. XMLHttpRequest 对象 所有现代浏览器均支 ...
- 3、Go Exit
package main import ( "fmt" "os") func main() { //当使用`os.Exit`的时候defer操作不会被运行 所以 ...
- BZOJ 3674: 可持久化并查集模板
Code: #include <cstdio> #include <algorithm> #include <cstring> #include <strin ...
- Mac配置PHP环境
本文章来自:http://blog.csdn.net/wj_november/article/details/51417491 本人使用的是:MacOs 10.12.3,根据如上操作已经安装成功,感谢 ...
- Rsyslog比较详细的
http://blog.csdn.net/fishmai/article/details/51842340