概率期望题(期望 DP)做题记录

概率期望题(期望 DP)做题记录

P3830 [SHOI2012]随机树

难点在于第二问:生成树的期望深度。

不 wei zhuo 捏,设 \(dp_{i,j}\) 表示已经有了 \(i\) 个叶子结点,深度大于 \(j\) 的概率。

考虑枚举一棵子树的大小,转移方程如下:

\[dp_{i,j}=\sum_{k=1}^{i-1}\dfrac{dp_{k,j-1}+dp_{i-k,j-1}-dp_{k,j-1}\times dp_{i-k,j-1}}{i-1} \]

上面分子的部分就是加到一棵子树的概率减去重复的情况,然而我们发现这样仍然有重复情况。

考虑每一种深度情况,即左右子树分别为 \((1,i-1),(2,i-2),\dots,(i-1,1)\) 的情况的概率,可以将整棵树用加点方式 \(LRLLR\dots RLRLL\) 类似的序列表示出来。

它是一个有 \(k\)\(L\)\(i-k\)\(R\) 组成的操作序列,那么总共有 \(\dfrac{(i-2)!}{(k-1)!(i-k-1)!}\) 中不同的序列。

考虑计算生成一棵 \(n\) 个点的数的方案数:第一次只有 \(1\) 中选择,第二次有 \(2\) 种选择,……那么方案数就是 \((n-1)!\)

同理,给定左右子树大小,生成树的方案数是 \((k-1)!(i-k-1)!\) 的。

个上面的式子结合起来会发现方案数等于 \((i-2)!\),竟然与 \(k\) 无关!也就是说,无论左右子树到底多大,方案数都是相同的,所以有 \(\dfrac{1}{i-1}\)

P3239 [HNOI2015]亚瑟王

写了两个假算,终于改对了。

首先肯定考虑将每张牌打出的概率算出来,每一轮考虑过来。

一开始打的假算考虑的是计算在当前面对第 \(i\) 轮第 \(j\) 张牌时,这一轮前面的牌都没有选择,自己选择的概率

发现这样在前面的牌被轮空的时候,难以计算选择这张牌的概率,所以需要记录前面被轮空了几张牌。

\(dp_{i,j}\) 表示在整一局游戏中,在前 \(i\) 张牌中,选择了 \(j\) 张牌的概率。

面临第 \(i\) 张牌,前面已经选择了 \(c\) 张牌时,选择 \(i\) 的概率为:

\[dp_{i-1,c}\times (1-p_i)^{r-c-1}\times p_i \]

意思是前面有 \(r-c-1\) 次面临 \(i\) 的机会都没有选择,这一次选择了。每次算完概率后直接累加答案。

\(dp\) 数组的转移方程为:

\[dp_{i,c}=dp_{i-1,c}\times (1-p_i)^{r-c}+dp_{i-1,c-1}\times \left(1-(1-p_i)^{r-c+1}\right) \]

初始状态:\(dp_{0,0}=1.0\)。目标状态:整个数组。

每次计算幂会增加一大把常数,可以预处理 \((1-p_i)\) 的幂次,复杂度 \(\mathcal{O(Tnr)}\) 转移。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值