Problem Description
有n种物品,并且知道每种物品的数量。要求从中选出m件物品的排列数。例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有”AB”,”BA”两种。

Input
每组输入数据有两行,第一行是二个数n,m(1<=m,n<=10),表示物品数,第二行有n个数,分别表示这n件物品的数量。

Output
对应每组数据输出排列数。(任何运算不会超出2^31的范围)

输入样例

2 2
1 1

输出样例

2
注意取整应该在结束时,即乘上f[m]后
#include<bits/stdc++.h>
using namespace std;
const int N=110;
double a[N],f[N],c1[N],c2[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n,m;
f[0]=1;
for(int i=1;i<=10;++i)
f[i]=i*f[i-1];
while(cin>>n>>m)
{
memset(c1,0,sizeof(c1));
memset(c2,0,sizeof(c2));
for(int i=1;i<=n;++i)
cin>>a[i];
for(int i=0;i<=a[1];++i)
c1[i]=1/f[i];
for(int i=2;i<=n;++i)
{
for(int j=0;j<=m;++j)
for(int k=0;j+k<=m&&k<=a[i];++k)
c2[j+k]+=c1[j]/f[k];
for(int j=0;j<=m;++j)
c1[j]=c2[j],c2[j]=0;
}
long long ans=round(c1[m]*f[m]);//每一个单独的组合都要乘f[m]
cout<<ans<<'\n';
}
return 0;
}

hdu:排列组合(指数型母函数)的更多相关文章

  1. HDU 1521 排列组合 指数型母函数

    排列组合 Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status D ...

  2. hdu1521 排列组合(指数型母函数)

    题意: 有n种物品,并且知道每种物品的数量ki.要求从中选出m件物品的排数.         (全题文末) 知识点: 普通母函数 指数型母函数:(用来求解多重集的排列问题) n个元素,其中a1,a2, ...

  3. hdu1521 排列组合 指数型母函数模板题

    排列组合 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  4. hdu1521:排列组合---指数型母函数

    题意: n种元素,每种有 ni个,选出 m 个的排列有多少种 题解: 指数型母函数的裸题 x^n 项的系数为  an/n!.... 代码如下: #include <iostream> #i ...

  5. HDU 1521 排列组合 (母函数)

    题目链接 Problem Description 有n种物品,并且知道每种物品的数量.要求从中选出m件物品的排列数.例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB&qu ...

  6. 母函数 <普通母函数(HDU - 1028 ) && 指数型母函数(hdu1521)>

    给出我初学时看的文章:母函数(对于初学者的最容易理解的) 普通母函数--------->HDU - 1028 例题:若有1克.2克.3克.4克的砝码各一 枚,能称出哪几种重量?各有几种可能方案? ...

  7. hdu 1521 排列组合 —— 指数型生成函数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1521 标准的指数型生成函数: WA了好几遍,原来是多组数据啊囧: 注意精度,直接强制转换(int)是舍去小 ...

  8. 排列组合 HDU - 1521 -指数型母函数

    排列组合 HDU - 1521 一句话区分指数型母函数和母函数就是 母函数是组合数,指数型母函数是排列数 #include<bits/stdc++.h> using namespace s ...

  9. 【指数型母函数】hdu1521 排列组合

    #include<cstdio> #include<cstring> using namespace std; int n,m,jiecheng[11]; double a[1 ...

  10. HDU 2065 “红色病毒”问题 --指数型母函数

    这种有限制的类棋盘着色问题一般可以用指数型母函数来解决,设Hn表示这样的着色数,首先H0=1,则Hn等于四个字母的(A,B,C,D)的多重集合的n排列数,其中每个字母的重数是无穷,且要求A,C出现的次 ...

随机推荐

  1. QMap 删除指针内容时的一个问题

    在测试代码时,发现一个问题: void UserManager::removeUser(const QString &name) { QMap<QString, User*>::I ...

  2. C++ 函数类型和函数指针类型的自动推导、声明和赋值

    1.函数类型推导 #include <iostream> bool MyComp(int val1, int val2) { return val1 > val2; } int ma ...

  3. 【Quartus系列】实验一: 3-8译码器(原理图输⼊设计)

    实验一: 3-8译码器(原理图输⼊设计) ⼀:实验⽬的 1. 了解3-8译码器的电路原理,掌握组合逻辑电路的设计⽅法 2. 掌握QuartusII软件原理图输⼊设计的流程 ⼆:实验内容 2.1设计输⼊ ...

  4. PMP项目启动会与开工会议

    转载https://www.cnblogs.com/yanpeng1991/p/11391805.html 项目启动会(project initiating meeting)与项目开工会(kick-o ...

  5. python装饰器中高级用法(函数加参)

    在上一章我们说到装饰器的原则和基本用法,下面来补充一下:如果函数加参,装饰器该如何变化 1,还是用上一章的源代码 2,给test2加个参数name 报错了,本来给test2加一个name参数,为了实现 ...

  6. vue 3 打印 print-js

    1.安装 npm install print-js --save 2.引用 import print from 'print-js' 3.编写打印函数 const enterDialog = asyn ...

  7. dialog弹窗里生成二维码 (reading qppendChild)

    在dialog弹窗里生成二维码第一次点击时 dialogFormVisible.value=false,二维码生成时会找不到对象可以用nextTick()函数 将二维码生成代码放到nextTick() ...

  8. CompletableFuture的使用

    1 List<List<String>> subList = CommonUtils.splitList(pendingIds, 500);private static fin ...

  9. hdfs操作——hdfs的shell命令和hdfs的JavaAPI操作

    hdfs解决hadoop海量数据的存储. shell 命令(所有hadoop fs 可由 hdfs dfs代替) (1) 在hdfs上创建目录 hadoop fs -mkdir 目录名 (2) 本地文 ...

  10. 062_Apex使用Assert

    assert关键字用法简单,但是使用assert往往会让你陷入越来越深的陷阱中.应避免使用.总结了以下原因:   1.用assert代替if是陷阱之二.assert的判断和if语句差不多,但两者的作用 ...