HDU4532(组合DP)
题目:安排座位
解析: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)相关推荐
- 组合dp hdu-4489-The King’s Ups and Downs
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4489 题目意思: 给一个n,求n个高矮不同的人排成一排使得高.矮依次排列的种数. 解题思路: 组合d ...
- 6177 The King’s Ups and Downs(组合dp)
欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/--萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗-- ---------- ...
- 打印最少硬币的组合-dp+记录路径
题目: 有5种硬币,面值分别为:1,5,10,25,50.数量无限,输入非负整数s,选用硬币,使其和为s.要求输出最少的硬币组合的方案? 数据范围: s最大为250. 解题思路: 有时间再写,可以评论 ...
- hdu 4489(排列组合+DP)
有N个高矮不同的人,求高矮高矮高矮高矮......或者矮高矮高矮高......的排列方法一共有多少种. 假设第N个插入到队伍中的人比前N-1个人都要高,假设他插入的位置为 j ,那么j-1要比j-2矮 ...
- 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 ...
- ZOJ 3797 Sister's Noise 组合+DP
[题目大意] 有N种字符,第i种字符有Ti个.用这些字符组成长度>=L的字符串,求这其中第M的大的串. [思路] 以样例1为例: 3 37 1 I 1 P 1 C 5 我们假定第一位放的字符为P ...
- HDU 4832 Chess 排列组合 DP
Chess Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 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/ ...
- 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 ...
最新文章
- 正确实现用spring扫描自定义的annotation
- alteon ad3 配置
- 【NLP】情感分析实战:金融市场中的NLP
- java dom4j读写xml_Java:简单的读写XML文件之使用DOM4J读写
- Hibernate读书笔记---继承映射
- 一款可定制的外国jQuery图表插件jqplot
- 年后跳槽 BAT 必看,10 种干货帮你 Offer 拿到手软!
- SLG手游Java服务器的设计与开发——架构分析
- c语言#include后的尖括号和双引号有什么区别
- 如何将标准地图服务中的eps格式中国地图应用到论文中带审图号的地图制作?(二)
- 使用zxing生成彩色或带图片的二维码
- 利用Excel去除重复项
- 谷哥学术2022年2月资源分享下载列表 15/20
- Warning maven relocated xml-apis to 1.0.b
- 基于SSM架构的美发店会员信息管理系统
- 在UNIX \ Linux终端中的可视化磁盘空间和磁盘使用情况小工具 - Vizex
- Cisco 4507交换机更换备用引擎操作手册
- 静态方法与非静态方法区别
- 组态王与485串口设备通讯(485执行Modbus RTU协议)
- Ubuntu正确卸载cuda11.0 | 安装cuda10.1、cuDNN