POJ 3682

题意:一场宴会,将会一直举办直到硬币投出第k次正面向上,正面向上的概率为p。另外,第i天的宴会将会花费2i-1的钱,问最后宴会结束期望以及花钱期望。

题解:递推求期望,设dp1[i]为已经抛出i次正面时,结束时间的期望,dp2[i]为已经抛出i次正面时,结束金钱的期望。

dp1[i]=(dp1[i]+1)*(1-p)+dp1[i+1]*p   ==>  dp1[i]=dp[i+1]+1/p

假设宴会会矩形m天,第一天花费1,第二天花费3.......等价于第m天花费1,第m-1天花费3......

所以,有了dp1,dp2[i]=(dp2[i+1]+(dp1[i+1]+1)*2-1)*p+(dp2[i]+(dp1[i]+1)*2-1)*(1-p)  ==>  dp2[i]=dp2[i+1]+2*dp1[i+1]+1+(1-p)/p*(2*dp1[i]+1)

View Code
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 double dp1[1005],dp2[1005];
 6 int main()
 7 {
 8     int n;
 9     double p;
10     while(scanf("%d",&n),n)
11     {
12         scanf("%lf",&p);
13         dp1[n]=0;
14         dp2[n]=0;
15         for(int i=n-1;i>=0;i--)
16         {
17             dp1[i]=dp1[i+1]+1.0/p;
18             dp2[i]=dp2[i+1]+2*dp1[i+1]+1+(1-p)/p*(2*dp1[i]+1);
19         }
20         printf("%.3lf %.3lf\n",dp1[0],dp2[0]);
21     }
22     return 0;
23 }

转载于:https://www.cnblogs.com/tmeteorj/archive/2012/10/17/2727672.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值