题目描述
题解
比较水的期望DP,但也让我悟到了一点关于期望的东西。
题目描述得不可描述,看起来逼格很高。但平均就是期望,关键是最优策略这点。
根据我幼稚的理解,期望是均值没错,但期望之所以叫期望是因为它在预知未来,当前这个状态期望的得分就是作出决策后未来能得到分数的均值。
所以或许这就是期望DP的状态要倒过来推的原因吧。
考虑f[i][j]为剩下i张红牌j张黑牌的在最优策略下的期望。根据我脚推的式子,大概就是:
f[i][j] = max(0.0, p*(f[i-1][j]+1.0) + (1.0-p)*(f[i][j-1]-1.0));
(我居然神奇地想到了取max)
其中p=i/(i+j),其中与0.0取max就是避免那种作出决策却拿到负数的情况,此时应该叫停。于是这样就保证了最优决策(即我们不拿负数去贡献一个状态)。
很明显,f[0][j]=0,f[i][0]=i,注意空间只有64M,滚动第一维即可。至于答案去尾,请参见程序。
短小的代码
#include <bits/stdc++.h&