码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 3625 Examining the Rooms(第一类斯特林数)

时间:2018-09-21 19:49:39      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:题意   www   理解   std   ble   pac   for   i++   oms   

题意:给你n扇门,然后可以开k次门,每次们后都有一把钥匙,不能开1号门,问最后打开一号门的概率是多少

思路:看大家说是裸的第一类斯特林数,我觉得有篇博客写的很好(传送门),这里采取的是博客里的第二种思路,感觉这种如果想到的话更容易理解,但是并没有遇到博客里说的g++会wa的情况

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=55;
LL s1[maxn][maxn];
double f[55];
void init()
{
    s1[0][0]=1;
    for(int i=1;i<maxn;i++){
        for(int j=1;j<=i;++j){
            s1[i][j]=s1[i-1][j-1]+s1[i-1][j]*(i-1);
        }
    }
}
int main()
{
    init();
    f[0]=1;
    for(int i=1;i<maxn;i++){
        f[i]=f[i-1]*i;
    }
    int T_T;
    scanf("%d",&T_T);
    while(T_T--){
        int n,k;
        scanf("%d%d",&n,&k);
        double ans=0;
        for(int i=1;i<=k;i++){
            ans+=s1[n][i]-s1[n-1][i-1];
        }
        ans/=f[n];
        printf("%.4f\n",ans);
    }
    return 0;
}

 

HDU 3625 Examining the Rooms(第一类斯特林数)

标签:题意   www   理解   std   ble   pac   for   i++   oms   

原文地址:https://www.cnblogs.com/lalalatianlalu/p/9688007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!