首页 > 其他 > 详细

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

时间:2018-09-21 19:30:31      阅读:161      评论:0      收藏:0      [点我收藏+]

题意:给你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(第一类斯特林数)

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!