您的位置:首页 > 其它

HDU-5985-Lucky Coins(概率)

2017-03-24 16:13 204 查看
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5985

收敛概率,注意n==1的情况。

#include <bits/stdc++.h>
#define MAXN 107
using namespace std;
double temp[MAXN][300],p[MAXN];
int num[MAXN];

int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
for(int i=1; i<=n; ++i)
scanf("%d%lf",&num[i],&p[i]);
if(n==1){cout<<"1.000000\n";continue;}
for(int i=1; i<=n;++i)
{
temp[i][1]=1.0-p[i];
double c=1.0;
for(int j=2; j<=210; ++j)
{
c*=p[i];
temp[i][j]=temp[i][j-1]+temp[i][1]*c;
}
}
double ans;
for(int i=1; i<=n; ++i)
{
ans=0;
for(int l=1; l<=200; ++l)
{
double poi = pow(temp[i][l+1],num[i])-pow(temp[i][l],num[i]);
for(int j=1; j<=n; ++j)
{
if(i==j)continue;
poi*=pow(temp[j][l],num[j]);
}
ans+=poi;
}
if(i!=n)
printf("%0.6lf ",ans);
else printf("%0.6lf\n",ans);
}

}
return 0;
}
/*
3
1
1000000 0.6
2
1 0.4
1 0.6
3
2 0.4
2 0.5
2 0.6
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: