指数型生成函数。做这题时,回去看看组合数学才知道,指数生成函数求的就是多重集合的r排列数。

#include <iostream>
#include <cstdio>
#include <algorithm>
#define N 15 using namespace std; struct PQ{
int p,q;
}; PQ c1[N],c2[N];
int num[N];
PQ cal;
int Q[N]; int gcd(int a,int b){
if(b==0) return a;
return gcd(b,a%b);
} PQ addsum(PQ a,PQ b){
PQ tmp;
tmp.q=a.q*b.q;
tmp.p=a.p*b.q+a.q*b.p;
int g=gcd(max(tmp.p,tmp.q),min(tmp.p,tmp.q));
tmp.p/=g; tmp.q/=g;
return tmp;
} int main(){
int n,m,ptmp,qtmp;
Q[0]=1;
for(int i=1;i<N;i++)
Q[i]=Q[i-1]*i;
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=1;i<=n;i++)
scanf("%d",&num[i]);
for(int i=0;i<N;i++){
c1[i].p=c2[i].p=0;
c1[i].q=c2[i].q=1;
}
for(int i=0;i<=num[1];i++)
c1[i].p=1,c1[i].q=Q[i];
for(int i=2;i<=n;i++){
for(int j=0;j<N;j++){
for(int k=0;k+j<N&&k<=num[i];k++){
ptmp=1,qtmp=Q[k];
cal.p=ptmp*c1[j].p;cal.q=qtmp*c1[j].q;
ptmp=gcd(max(cal.p,cal.q),min(cal.p,cal.q));
cal.p/=ptmp; cal.q/=ptmp;
c2[k+j]=addsum(cal,c2[k+j]);
}
}
for(int j=0;j<N;j++)
c1[j]=c2[j],c2[j].p=0,c2[j].q=1;
}
printf("%d\n",c1[m].p*Q[m]/c1[m].q);
}
return 0;
}

  

HDU 1521的更多相关文章

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

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

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

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

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

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

  4. Hdu 1521 排列组合

    a1 n1 a2 n2 ... ak nkn=n1+n2+...+nk从n个数中选r个排列(不是组合噢)// 指数型母函数// 模板#include <iostream> #include ...

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

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

  6. HDU 1521 指数型母函数

    方法一: DFS 方法二:生成函数 每个数可以重复一定次数,求排列组合数,这是裸的指数型生成函数: #include <bits/stdc++.h> using namespace std ...

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

    根据套路列出式子:\( \prod_{i=1}^{n}\sum_{j=0}^{c[i]}\frac{x^j}{j!} \),然后暴力展开即可 #include<iostream> #inc ...

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

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

  9. HDU——PKU题目分类

    HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...

随机推荐

  1. [Angular] Service Worker Version Management

    If our PWA application has a new version including some fixes and new features. By default, when you ...

  2. 近200篇机器学习&amp;深度学习资料分享

    编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.并且原文也会不定期的更新.望看到文章的朋友能够学到很多其它. <Brief History of Machine ...

  3. BZOJ 2728 HNOI2012 与非 高斯消元

    题目大意:给定k位二进制下的n个数,求[l,r]区间内有多少个数能通过这几个数与非得到 首先观察真值表 我们有A nand A = not A 然后就有not ( A nand B ) = A and ...

  4. UVA10370 Above Average

    Above Average It is said that 90% of frosh expect to be above average in their class. You are to pro ...

  5. PBKDF2加密的实现

    PBKDF2(Password-Based Key Derivation Function). 通过哈希算法进行加密.由于哈希算法是单向的,能够将不论什么大小的数据转化为定长的"指纹&quo ...

  6. [yueqian_scut]Android多点触控技术和应用框架

    Android多点触控技术跟Linux输入子系统紧密相关.本文将从应用的角度说明Android多点触控技术的接口和应用. 一.多点触控场景分析 网络上有关Android多点触控技术的文章多见于两点拉伸 ...

  7. 百度编辑器图片在线流量返回url改动

    百度编辑器中返回的是我们server中的url,有时并非我们须要的,比方图文编辑中.我想在线浏览上传过的图片 ,那么我返回的应该是腾讯server上面的url.这样才不会被腾讯的过滤器过来掉,全部我们 ...

  8. 如何用php实现qq登陆网站

    PHP网站入QQ互联,使用QQ号码登录网站. 平台接口系列文章 PHP网站入QQ互联,使用QQ号码登录网站 PHP网站接入人人网,授权登陆 php facebook api网站接入facebook 1 ...

  9. web工程中的各种路径(eclipse开发)

    目前遇到的 web 工程中要写url和路径的文件有 webContent中.jsp/.html :action src中的servlet类 : 映射地址.重定向.请求转发.访问资源文件(webCont ...

  10. vue中slot的用法案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...