#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> #define LL __int64
using namespace std;
const LL MOD=1000000007ll; LL C[500][500];
LL Nn[500];
LL dp[50][500]; //表示前i个系,存在j个空位,它左右两个同学是来自同一个系的种数。此时是把同一个系的同学看作是无区别的
//等计算完毕后再乘上阶乘即可。
int stu[50];
/*此题确实是妙,开始时就往容斥想,但很复杂,没能做出来。
题解是利用了是否存在相邻两个同学来自同一个系这个特点来设状态。
*/ void Init(){
Nn[1]=1;
for(int i=2;i<=500;i++)
Nn[i]=(Nn[i-1]*(LL)i)%MOD;
memset(C,0,sizeof(C));
C[0][0]=1ll;
for(int i=1;i<=500;i++){
for(int j=0;j<=i;j++){
if(j==0) C[i][j]=1ll;
else if(j==i) C[i][j]=1ll;
else{
C[i][j]=(C[i-1][j]+C[i-1][j-1])%MOD;
}
}
}
} void slove(int n){
dp[1][stu[1]-1]=1;
int sum=stu[1];
for(int i=2;i<=n;i++){
for(int j=0;j<sum;j++){//前i个系最多有sum个空位(左右来自同一个系的),于是枚举这些空位
for(int k=1;k<=stu[i];k++){//加入第i个系的同学,把这i个同学分块。
for(int h=0;h<=j&&h<=k;h++){//表示前h个块的同学加入到这j个空位中
dp[i][j-h+stu[i]-k]+=(((dp[i-1][j]*C[j][h])%MOD*C[stu[i]-1][k-1])%MOD*C[sum+1-j][k-h])%MOD;
//C[j][h]表示从j个空位中选出h个让其加入
// C[stu[i]-1][k-1]表示如何分块
//C[sum+1-j][k-h]表示将剩余的块加入非j个空位,即左右来自不同系的
//dp[i][j-h+stu[i]-k]当h个空位加入了同学,导致左右同系的空位减少。但明显的,分块的块内同样引入了
//左右同系的空位
dp[i][j-h+stu[i]-k]%=MOD;
}
}
}
sum+=stu[i];
}
LL ans=dp[n][0];
for(int i=1;i<=n;i++){
ans=(ans*Nn[stu[i]])%MOD;
}
printf("%I64d\n",ans);
} int main(){
Init();
int T;
scanf("%d",&T);
int n,t=0;
while(T--){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&stu[i]);
memset(dp,0,sizeof(dp));
printf("Case %d: ",++t);
slove(n);
}
return 0;
}

  

HDU 4532的更多相关文章

  1. HDU 4532 湫秋系列故事——安排座位 (组合+DP)

    湫秋系列故事——安排座位 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)To ...

  2. [SinGuLaRiTy] 组合数学题目复习

    [SinGuLaRiTy] Copyright (c) SinGuLaRiTy 2017.  All Rights Reserved. [CQBZOJ 2011] 计算系数 题目描述 给定一个多项式( ...

  3. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  4. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  5. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  6. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  7. HDU 4006The kth great number(K大数 +小顶堆)

    The kth great number Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64 ...

  8. HDU 1796How many integers can you find(容斥原理)

    How many integers can you find Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

  9. hdu 4481 Time travel(高斯求期望)(转)

    (转)http://blog.csdn.net/u013081425/article/details/39240021 http://acm.hdu.edu.cn/showproblem.php?pi ...

随机推荐

  1. 洛谷P1478 陶陶摘苹果(升级版)

    题目数据范围小,开两个数组手写冒泡应该也能过,不过和之前在牛客上的一题类似用结构体数组就好了,主要是注意用结构体数组的排序 题目 题目描述 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果 ...

  2. html 基础演示代码

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

  3. 高斯消元_HihoCoderOffer6_03

    题目3 : 图像算子 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在图像处理的技术中,经常会用到算子与图像进行卷积运算,从而达到平滑图像或是查找边界的效果. 假设原图 ...

  4. shell script练习:利用日期进行文件的创建

    随日期变化:利用 date 进行文件的创建 想像一个状况,假设我的服务器内有数据库,数据库每天的数据都不太一样,因此当我备份时, 希望将每天的数据都备份成不同的档名,这样才能够让旧的数据也能够保存下来 ...

  5. 10.Nodes and Bindings

    节点数据绑定 节点是构成Ventuz场景的基本元素.每个节点既属于图层.也属于层级或内容.既可以在图层编辑器,也可以在层级编辑器或内容编辑器中编辑. 内容节点包括资产描述(如材质.xml文件等).数字 ...

  6. 仿iphone动态萤火虫锁屏应用安卓源码

    该源码是仿iphone动态萤火虫锁屏应用源码,源码SkyLock,这也是最近弄了一款锁屏,苦于市场百般阻拦与锁屏应用数量实在太多,于是将它拿出来开源:废话不多说,希望大家能够希望,更多说明请看下面的吧 ...

  7. Windows Phone 8: NavigationInTransition实现页面切换效果

    NavigationInTransition这个是实现页面切换效果,而且没控件来拖,要自己手动写, 将App.xaml.cs中InitializePhoneApplication()函数里的RootF ...

  8. Mysql 之show status数据详解

    状态名 作用域 详细解释 Aborted_clients Global 由于客户端没有正确关闭连接导致客户端终止而中断的连接数 Aborted_connects Global 试图连接到MySQL服务 ...

  9. js的基础运用

    总结: 1.定义:分为隐式定义和显式定义可以先定义后赋值. 2.+:当两边都是数值则运行加法运算,若一遍是字符型则进行拼接. 3.数值变字符:数值变量.toString()方法. 字符变数值:通过加一 ...

  10. React 服务器渲染原理解析与实践

    第1章 服务器端渲染基础本章主要讲解客户端与服务器端渲染的概念,分析客户端渲染和服务器端渲染的利弊,带大家对服务器端渲染有一个粗浅认识. 1-1 课程导学1-2 什么是服务器端渲染1-3 什么是客户端 ...