传送门:

解题思路:

要求相邻两行小球颜色集合不同,并且限制行内小球相邻不同。

由此可得:每行小球排列都是独立与外界的,

所以答案应该是对于所有行的颜色集合分类,在将行内的答案乘到上面。

先考虑如何分类:

我们可以确定对于每行所取的颜色种类$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的更多相关文章

  1. CodeForces - 140E:New Year Garland (组合数&&DP)

    As Gerald, Alexander, Sergey and Gennady are already busy with the usual New Year chores, Edward has ...

  2. codeforces problem 140E New Year Garland

    排列组合题 题意 用m种颜色的彩球装点n层的圣诞树.圣诞树的第i层恰由l[i]个彩球串成一行,且同一层内的相邻彩球颜色不同,同时相邻两层所使用彩球的颜色集合不同.求有多少种装点方案,答案对p取模. 只 ...

  3. 【codeforces 758B】Blown Garland

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  4. 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 ...

  5. Codeforces 758B:Blown Garland(模拟)

    http://codeforces.com/problemset/problem/758/B 题意:给出一个字符串,每4个位置对应一个颜色,如果为‘!’的话,代表该灯泡是坏的,问最后每个颜色坏的灯泡的 ...

  6. 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 ...

  7. Codeforces 140E(排列组合、dp)

    要点 主要学到的东西:一个序列染色,相邻不染同色,恰用\(j\)种颜色的1.模式数.2.方案数.3.具体染色数. 从大的思路上来讲:先dp预处理出每一层的模式数:\(f[i][j]\)表示\(i\)个 ...

  8. Codeforces 392 B Blown Garland

    题意:输入是由连续的RYGB和字符!组成的字符串,R代表红灯,Y代表黄灯,G代表绿灯,B代表蓝灯.简而言之,就是给定的字符串保证了下标对4取余相同的灯颜色都相同,但是有的地方为‘!’代表这个灯坏了,然 ...

  9. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

随机推荐

  1. js时间格式化函数,支持Unix时间戳

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. Cube Simulation zoj3429 模拟

    Description Here's a cube whose size of its 3 dimensions are all infinite. Meanwhile, there're 6 pro ...

  3. Zico源代码分析:执行启动过程分析和总结

    事实上已经有童鞋对Zico的源代码和执行过程进行了总结,比如:http://www.cnblogs.com/shuaiwang/p/4522905.html.这里我再补充一些内容. 当我们使用mvn ...

  4. nodejs02

    Node.js没有根目录的概念,因为它根本没有任何的web容器! 让node.js提供一个静态服务,都非常难! 也就是说,node.js中,如果看见一个网址是 1127.0.0.1:3000/fang ...

  5. Windows10+VS2013+caffe+Python2.7+CUDA8.0 部署配置

    所需环境工具: 1. Windows 10 2. VS2013 3. Windows版本的caffe工具包,地址:https://github.com/Microsoft/caffe 4. Anaco ...

  6. [学习笔记]AJAX学习

    AJAX学习 ——在w3cschool学习AJAX的学习笔记 参考网站:w3cschool XMLHttpRequest 是 AJAX 的基础. XMLHttpRequest 对象 所有现代浏览器均支 ...

  7. 3、Go Exit

    package main import ( "fmt" "os") func main() { //当使用`os.Exit`的时候defer操作不会被运行 所以 ...

  8. BZOJ 3674: 可持久化并查集模板

    Code: #include <cstdio> #include <algorithm> #include <cstring> #include <strin ...

  9. Mac配置PHP环境

    本文章来自:http://blog.csdn.net/wj_november/article/details/51417491 本人使用的是:MacOs 10.12.3,根据如上操作已经安装成功,感谢 ...

  10. Rsyslog比较详细的

    http://blog.csdn.net/fishmai/article/details/51842340