Hearthstone
题目链接
题目大意
说有那么一种人玩炉石是神抽狗,总能抽到他想要的牌(确实),现在你的牌组中只有两种牌,一种是奥数智慧(可以抽两张牌),另外一种是伤害牌(可以造成X种伤害)。现在告诉你2种牌的数量,对手的HP,和每一张伤害牌的伤害,问你在第一回合就能取胜的概率是多少。
题解
很明显,这里只有当牌组里没牌的时候或者手上全是伤害的时候是最终状态,所以我们可以考虑首先预处理出: \[ d[i]:取i张伤害牌时取胜的概率。 \] 有了d[i]之后,我们就可以通过搜索搜出取i张伤害牌的概率,再来乘上这个概率就行了,于是我们定义\(dfs(A,B,a,b)\)为现在牌组中有A张A牌,B张B牌,手上有a张A牌,b张B的概率,有了这个定义,我们可以很快计算出结果~
代码
这个跑了46ms,还是挺快的。这一题因为最后要输出分数,所以搜的时候只能麻烦一点用分数存了。