00:00:00
概率 DP & 有后效性 DP 笔记
一、概率 DP
1. P2473 [SCOI2008] 奖励关
数据范围显然状压,设
但是这样是无法转移的,从前往后转移不知道前面的哪些情况是可行的,哪些情况是不可行的;哪些前置状态概率大,哪些前置状态概率小。
于是就可以想到了从后边向前边转移,因为后边的状态一定是在满足前面的限制条件的情况下,等概率选取的,所以可以直接加起来再除以总数求出期望。
cpp
if ((s & st[j]) == st[j]) // 后面可以多吃 j
f[i][s] += max(f[i + 1][s], f[i + 1][s | 1 << j] + p[j]);
else // 后面不能多吃 j
f[i][s] += f[i + 1][s];
f[i][s] = 1.0 * f[i][s] / n;二、有后效性 DP
1. P3232 [HNOI2013] 游走
先求出每个点的期望经过次数,易得转移方程:
即
2. P3750 [六省联考 2017] 分手是祝愿
特殊性质题。
考虑
有了这个贪心,就很好想到状态
有
稍稍化简:
转移即可。求答案时,如果发现贪心出来的次数都小于
3. P5249 [LnOI2019] 加特林轮盘赌
笑点解析:蓝题。
设
每一个人开完枪之后,所有人都向前移了一位,然后看第一个人死没死分为两种情况(有没有少了一个人)。
考虑用
则有
移项就能