题目:
- 一个游戏,每一局获胜概率为p%,获胜后获奖概率为q,q初值为2%,如果获胜没获奖q+2%,如果没有获胜q+1.5%。问输入p下获胜且获奖的期望。
- 我们能知道的初始状态是q=100%时的期望,此时就是一个几何分布,期望为1/p。dp[i]表示q=i时的期望。转移方程为(dp[i]=p*(1-q)*dp[min(200,i+4)]+(1-p)*dp[min(200,i+3)]+1;)。每一项等于获胜没获奖项和没获奖项和当前项。
int T;
double p, q;
double dp[N];
int main()
{
scanf("%d",&T);
for(int Case = 1; Case <= T; ++ Case){
for(int i = 1; i <= 200; ++ i) dp[i] = 0.0;
scanf("%lf",&p);
p /= 100.0;
dp[200] = 1.0 / p;
for(int i = 199; i >= 4; -- i ){
q = i / 200.0;
dp[i] = p * (1 - q) * dp[min(200, i + 4)] + (1 - p) * dp[min(200, i + 3)] + 1;
}
printf("Case %d: %.10lf
",Case,dp[4]);
}
return 0;
}