概率DP HDU 4586 play the dice

时间:2022-09-01 21:09:38

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=4586

解题思路:

只考虑第一次,获得的金币的平均值为sum/n.sum为所有色子的面的金币值相加。

对于运气好,摇中了可以再来一次,该轮就能获得m/n*(sum/n)

运气好,又再来一次,该轮能获得(m/n)^2*(sum/n)

无穷无尽的摇下去,一共能获得sum/n*(1+p + p^2+`````+p^k + ````),其中p = m/n

将式子化简,就能得到E = sum/(n-m)。所以当sum = 0时为0,n=m时为inf。其余就为sum/(n-m)。

贴代码:

 #include<cstdio>
int main()
{
// freopen("in.c","r",stdin);
int n,m,a;
while(~scanf("%d",&n))
{
int sum =;
for(int i=; i<n; ++i)
{
scanf("%d",&a);
sum += a;
}
scanf("%d",&m);
for(int i=; i<m; ++i)
scanf("%d",&a);
if(sum == ) printf("0.00\n");
else if(n == m )printf("inf\n");
else printf("%.2f\n",(double)sum/(n-m));
}
return ;
}