您的位置:首页 > 其它

HDU 3625 Examining the Rooms

2013-12-11 02:06 363 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3625

题意:给出N个房间,每个房间的钥匙随机放在某个房间内,概率相同。有K次炸门的机会(不能炸第一个房间),求能进入所有房间的可能性为多大。

思路:N个房间形成[1,K]个环时可以。N个元素形成K个环为S
[K]=S[N-1][K-1]+S[N-1][K]*(N-1)。题目要求不能炸第一个房间,要减去第一个房间独立成环的情况,答案为sigama(S
[i]-S[n-1][i-1])(1<=i<=K)。

i64 f
,S

;

void init()
{
int i,j;
f[0]=1;
for(i=1;i<N;i++) f[i]=f[i-1]*i;
for(i=1;i<N;i++)
{
S[i][0]=0; S[i][i]=1;
for(j=1;j<i;j++) S[i][j]=(i-1)*S[i-1][j]+S[i-1][j-1];
}
}

int n,m;

int main()
{
init();
rush()
{
RD(n,m);
if(n==1||m==0)
{
puts("0.0000");
continue;
}
double ans=0;
int i;
FOR1(i,m) ans+=S
[i]-S[n-1][i-1];
ans/=f
;
printf("%.4lf\n",ans);
}
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: