题目:安排座位

解析:http://www.douban.com/note/269136472/

#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
typedef long long LL;
const LL MOD=1000000007;
LL a[550];
LL A[550];
LL C[550][550];
LL dp[55][550];
void Init()
{
for(int i=0; i<550; i++)
{
C[i][0]=C[i][i]=1;
for(int j=1; j<i; j++)
C[i][j]=(C[i-1][j]+C[i-1][j-1])%MOD;
}
A[0]=1;
for(int i=1; i<550; i++)
A[i]=(A[i-1]*i)%MOD;
}
int main()
{
Init();
int T,n,tt=1;
cin>>T;
while(T--)
{
cin>>n;
for(int i=1; i<=n; i++)
cin>>a[i];
memset(dp,0,sizeof(dp));
dp[1][a[1]-1]=1;
LL sum=a[1];
for(int i=2; i<=n; i++)
{
for(int j=0; j<sum; j++)        //对每一种空位
for(int k=1; k<=a[i]; k++)  //将a[i]个元素分成k组
for(int u=0; u<=j && u<=k; u++) //将u组放到前j个空位中
dp[i][j-u+a[i]-1-(k-1)]=(dp[i][j-u+a[i]-k]+(((dp[i-1][j]*C[j][u])%MOD*C[sum+1-j][k-u])%MOD*C[a[i]-1][k-1])%MOD)%MOD;
sum+=a[i];
}
printf("Case %d: ",tt++);
LL ans=dp[n][0];
for(int i=1; i<=n; i++)    //对每一组,进行全排列
ans=(ans*A[a[i]])%MOD;
cout<<ans<<endl;
}
return 0;
}

HDU4532(组合DP)相关推荐

  1. 组合dp hdu-4489-The King’s Ups and Downs

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4489 题目意思: 给一个n,求n个高矮不同的人排成一排使得高.矮依次排列的种数. 解题思路: 组合d ...

  2. 6177 The King’s Ups and Downs(组合dp)

    欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/--萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗-- ---------- ...

  3. 打印最少硬币的组合-dp+记录路径

    题目: 有5种硬币,面值分别为:1,5,10,25,50.数量无限,输入非负整数s,选用硬币,使其和为s.要求输出最少的硬币组合的方案? 数据范围: s最大为250. 解题思路: 有时间再写,可以评论 ...

  4. hdu 4489(排列组合+DP)

    有N个高矮不同的人,求高矮高矮高矮高矮......或者矮高矮高矮高......的排列方法一共有多少种. 假设第N个插入到队伍中的人比前N-1个人都要高,假设他插入的位置为 j ,那么j-1要比j-2矮 ...

  5. HDU 4489 The King’s Ups and Downs(组合DP)

    作者:Accagain 链接:点击打开链接 原题 The King's Ups and Downs Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...

  6. ZOJ 3797 Sister's Noise 组合+DP

    [题目大意] 有N种字符,第i种字符有Ti个.用这些字符组成长度>=L的字符串,求这其中第M的大的串. [思路] 以样例1为例: 3 37 1 I 1 P 1 C 5 我们假定第一位放的字符为P ...

  7. HDU 4832 Chess 排列组合 DP

    Chess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  8. HDU - 4489 The King’s Ups and Downs (排列组合+dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4489点击打开链接 The King's Ups and Downs Time Limit: 2000/ ...

  9. HDU 4489 The King’s Ups and Downs 组合DP

    The King's Ups and Downs HDU - 4489 给一个整数 nnn,求 {1,⋯,n}\{1,\cdots,n\}{1,⋯,n} 符合以下条件的的排列数: 设 a1,⋯,ana ...

最新文章

  1. 正确实现用spring扫描自定义的annotation
  2. alteon ad3 配置
  3. 【NLP】情感分析实战:金融市场中的NLP
  4. java dom4j读写xml_Java:简单的读写XML文件之使用DOM4J读写
  5. Hibernate读书笔记---继承映射
  6. 一款可定制的外国jQuery图表插件jqplot
  7. 年后跳槽 BAT 必看,10 种干货帮你 Offer 拿到手软!
  8. SLG手游Java服务器的设计与开发——架构分析
  9. c语言#include后的尖括号和双引号有什么区别
  10. 如何将标准地图服务中的eps格式中国地图应用到论文中带审图号的地图制作?(二)
  11. 使用zxing生成彩色或带图片的二维码
  12. 利用Excel去除重复项
  13. 谷哥学术2022年2月资源分享下载列表 15/20
  14. Warning maven relocated xml-apis to 1.0.b
  15. 基于SSM架构的美发店会员信息管理系统
  16. 在UNIX \ Linux终端中的可视化磁盘空间和磁盘使用情况小工具 - Vizex
  17. Cisco 4507交换机更换备用引擎操作手册
  18. 静态方法与非静态方法区别
  19. 组态王与485串口设备通讯(485执行Modbus RTU协议)
  20. Ubuntu正确卸载cuda11.0 | 安装cuda10.1、cuDNN

热门文章

  1. 基于Xml 的IOC 容器-开始启动
  2. SpringMVC的请求-获得请求参数-获得基本类型参数
  3. 角色操作-角色添加代码实现
  4. 两种获取Stream流的方式
  5. MySQL常用存储引擎之Archive
  6. Oracle之表分区、分区索引(一)
  7. android10如何设置打开方式,Android启动方式
  8. Maven 配置文件 POM 的常用插件配置代码
  9. 深入理解 CAP 定理
  10. 在 IntelliJ IDEA 中误添加自定义的 JavaDoc 标签,如何删除