传送门
题意很简单:问答游戏,初始金额有一块钱,如果选择答的话,答对奖金翻倍,答错就没钱了,如果不答的话就,就维持奖金。答对的概率是
的一个随机概率。问在最优的策略下,
局后能获得的最大奖金期望值。
我们先来简化一下题目。
把概率固定为一个值
设
为在
题后能获得的可能最大奖金。
则
而
即为答案。
设
为答对
题后得到的奖金
则
.
对于某一题,考虑要不要回答,显然如果回答的期望值比不回答的期望值大,则回答,否则不回答。
因为
是确定的,所以要么都回答,要么都不回答。
所以不回答的时候,
回答的时候,
则当
时,就选择答题,否则不答题。
回到本题
概率变成了一个范围内的随机,其实看可以分隔无数特定概率。
所以问题的本质就跟上面所说的一样了。
因为
=
所以选择答题的时候,概率的期望值为
取
则在
内的概率我们选择不回答题,在
的区间为选择答题,这样得到能得到最大的期望值
显然概率密度为
所以有
代码:
#include<bits/stdc++.h>
using namespace std;
double dp[40];
double best[40];
int main() {
best[0]=1;
for(int i=1;i<=30;i++)best[i]=best[i-1]*2;
int n;
double t;
while(~scanf("%d%lf",&n,&t))
{
if(!n&&!t)break;
dp[n]=best[n];
for(int i=n-1;i>=0;i--)
{
double p=best[i]/dp[i+1];
dp[i]=(t<p)*(p-t)/(1.0-t)*best[i]+(1.0-max(p,t))/(1-t)*(1.0+max(p,t))/2*dp[i+1];
}
printf("%.3f\n",dp[0]);
}
}