HDU1521 排列组合【指数型母函数】
来源:互联网 发布:p2p网络借贷 论文 编辑:程序博客网 时间:2024/04/29 19:17
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1521
题目大意:
有n种物品,并且知道每种物品的数量。要求从中选出m件物品的排列数。例如
有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB","BA"两种。
思路:
典型的指数型母函数。指数型母函数的一般问题为:n个元素组成的多重集,其
中a1重复了n1次,a2重复了n2次,…,ak重复了nk次。若n = n1 + n2 + … +
nk,从n个元素中取r个排列,求不同的排列数。
AC代码:
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;double f[] = {1,1,2,6,24,120,720,5040,40320,362880,3628800};double num[11],c1[11],c2[11];int main(){ int N,M; while(cin >> N >> M) { memset(c1,0,sizeof(c1)); memset(c2,0,sizeof(c2)); for(int i = 0; i < N; ++i) cin >> num[i]; for(int i = 0; i <= num[0]; ++i) c1[i] = 1.0/f[i]; for(int i = 1; i < N; ++i) { for(int j = 0; j <= M; ++j) for(int k = 0; k <= num[i] && (k+j)<=M; ++k) c2[k+j] += (c1[j]/f[k]); for(int j = 0; j <= M; ++j) { c1[j] = c2[j]; c2[j] = 0; } } double s = 1.0*c1[M]*f[M]; printf("%.0lf\n",s); } return 0;}
0 0
- hdu1521 排列组合 指数型母函数
- HDU1521 排列组合 (指数型母函数)
- hdu1521 排列组合(指数型母函数)
- HDU1521 排列组合【指数型母函数】
- hdu1521 排列组合(指数型母函数)
- hdu1521排列组合 (指数型母函数)
- HDU1521排列组合(指数型母函数)详解
- HDU1521——排列组合(指数型母函数)
- 20160329 HDU1521 排列组合(指数型生成函数)
- HDU1521-指数母函数
- HDU1521 排序(指数型母函数)
- hdu1521(排列组合母函数)
- 排列组合 + 指数型母函数
- HDU 1521 排列组合(指数型母函数)
- HDU 1521 排列组合 指数型母函数
- Hdu 1521 排列组合 指数型母函数
- hdu 1521 排列组合(指数型母函数)
- 指数型母函数:hdu 1521 排列组合
- LeetCode 242 Valid Anagram
- python 读取本地txt,存入到mysql
- 三个月-见识菜鸟的每天的成长(js正则表达式&&phpmail的收发)
- HNU 13365 Circle of digits Input hou
- 双向循环链表
- HDU1521 排列组合【指数型母函数】
- Primary Key & Index
- 触动精灵扫坑
- 让程序员跳槽的非钱原因
- 工作日志-7
- UVA10534
- 用优先队列求最优二叉树根的权值
- 简单的常微分方程(组)初值问题
- 精确计算BigDecimal