Examining the Rooms hdu 3625
来源:互联网 发布:淘宝怎么注册企业账号 编辑:程序博客网 时间:2024/05/23 05:07
斯特林数
设S(p,k)是斯特林数
S(p,k)的一个组合学解释是:将p个物体划分成k个非空的不可辨别的(可以理解为盒子没有编号)集合的方法数。
S(p,k)的递推公式是:
S(p,k) = k*S(p-1,k) + S(p-1,k-1) ,1<= k <=p-1
边界条件:
S(p,p) = 1 ,p>=0
S(p,0) = 0 ,p>=1
递推关系的说明:考虑第p个物品,p可以单独构成一个非空集合,此时前p-1个物品构成k-1个非空的不可辨别的集合,方法数为S(p-1,k-1);也可以前p-1种物品构成k个非空的不可辨别的集合,第p个物品放入任意一个中,这样有k*S(p-1,k)种方法。
题目中会出现特例,是第一个房间的情况。每个S[p][k]里面都有一个包含数字1的环。最后需要处理一下。
#include <stdio.h>#include <iostream>using namespace std;long long s[21][21];long long all[21]={1};void Init() { for(int i=1;i<21;i++){ all[i]=all[i-1]*i; } for(int i=1;i<=20;i++){ s[i][0]=0; s[i][i]=1; for(int j=1;j<i;j++){ s[i][j]=s[i-1][j-1]+(i-1)*s[i-1][j]; } }}int main() { //freopen("in.txt", "r", stdin); int n; int a, b; Init(); while (cin >> n) { while (n--) { cin >> a >> b; long long sum=0; for(int i=1;i<=b;i++){ sum+=s[a][i]-s[a-1][i-1]; } printf("%.4f\n",(double)sum/all[a]); } } return 0;}
0 0
- hdu 3625 Examining the rooms
- hdu 3625 Examining the Rooms
- HDU 3625 Examining the Rooms
- HDU 3625 Examining the Rooms
- hdu 3625 Examining the Rooms
- HDU 3625 Examining the Rooms
- HDU-3625-Examining the Rooms
- Examining the Rooms hdu 3625
- HDU 3625 Examining the Rooms
- HDU 3625 Examining the Rooms
- HDU Examining the Rooms
- hdu Examining the Rooms
- 斯特灵数 hdu 3625 Examining the Rooms
- [Stirling] HDU 3625 Examining the Rooms
- HDU 3625 Examining the Rooms(斯特林数)
- hdu 3625 Examining the Rooms(斯特林数)
- hdu 3625 Examining the Rooms //组合数学DP
- hdu 3625 Examining the Rooms 第一类stirling数
- 使用httpclient发送get请求
- 使用分享扩展在应用之间传递数据
- JavaScript性能优化-数据存取
- Vue.js计算属性
- TTL电平、CMOS电平、RS232电平的区别
- Examining the Rooms hdu 3625
- solr配置文件schema文件中字段的介绍
- Qualcomm平台camera调试移植入门
- hdu 3549 Flow Problem【Dinic最大流】
- 51nod1486 大大走格子
- Java线程安全与不安全
- phpexcel
- poj 2253 Frogger
- 372. Super Pow