期望\(DP\) 方法总结

这个题目太大了,变化也层出不穷,这里只是我的一点心得,不定期更新!

1. 递推式问题

对于无穷进行的操作期望步数问题,一般可用递推式解决。
对于一个问题\(ans[x]\),
我们可以考虑建立逻辑转移
\[ans[now] = Merge(\ \ Function(ans[now])\ ,\ Function(ans[other])\ \ )\]
那么我们进行移项后,
\[ans[now]\ Delete\ Function(ans[now])\ \ =\ \ Function(ans[other])\]
此时,分离了\(ans[now]\) 与\(ans[other]\), 那么就构成了递推关系
.
然后,对于递推式,巧用 顺序枚举 与 倒序枚举, 来防止除0、溢出等问题。
比较经典的就是POJ 2096 Collecting Bugs,它的原递推式:
\(f[i][j]*(sn-ij) = Function(f[i-1][j]\ ,\ f[i][j-1]\ ,\ f[i-1][j-1])\)
我们目标状态为\(f[s][n]\),那么当\(i=s\),\(j=n\)时就会出现除0的情况。
一个比较巧妙的处理,改变状态含义,把它变为倒序处理:
\(f[i][j]*(ns-ij) = Function(f[i+1][j]\ ,\ f[i][j+1]\ ,\ f[i+1][j+1])\)
然后\(f[s][n]=0\),目标状态变为\(f[0][0]\)从而避免了除0的问题。
.
例题:[SHOI2002]百事世界杯之旅POJ2096 Collecting Bugs

2. 错位相减

注意式子的特性,观察特定情况下是否可以直接算或者错位相减。
注意式子的次数是否等差,当下表值达到一定程度时是否存在特殊计算方法。
例如:
\(f[i]=f[i-1]p_b+p_a(f[i-1]+1)p_b+{p_a}^2(f[i-1]+2)p_b+....\)
那么有\(p_af[i] = p_afp_b + {p_a}^2(f[i-1]+1)p_b + {p_a}^3(f[i-1]+2)p_b+...\)
然后错位相减可得:
\((1-p_a)f[i] = p_b(f[i-1] + p_a + {p_a}^2 + {p_a}^3 + ....)\)
此时出现了等比数列,套等比数列求和即可。
一般错位相减后 各种数学公式套一波 就可以把无限变为有限 。
例题:CF908D Arbitrary Arrangement

3. 高斯消元

这个真的是套路了,大家应该都会。
对于一个\(DP\)方程式,
若所有的转移方程式都形如\(f(x) = Function_{i=1}^n f(i)\)
那么直接移项,然后把每一个转移方程式当作一个方程,高斯消元即可。
例题:[HNOI2013]游走[HNOI2011]XOR和路径

4. 步骤移动转移

当直接用所需状态设不出方程式的时候,考虑从当前状态移动一步的条件与概率
那么状态变为\(f[移动步数]\),
转移为\(f[step] ==(Function)==> f[step+1]\)
以这个角度思考,很有可能会出现递推式,然后套用上面所说就可解出最终答案。
例题:[六省联考2017]分手是祝愿

5. 整数期望公式

我们设答案(整数)为\(x\),期望答案为\(E(x)\) ,\(P(x \ge i)\)表示答案大于等于\(i\)的概率,那么有:
\[E(x) = \sum_{i = 1}^∞ P(x \ge i)\]
我们同时有:\(P(i \leq x-1) + P(i \ge x) = 1\)
第一个公式中的无限看起来很吓人,但根据实际意义可以变为有限(答案不可能大于最大上限)。
用这个公式可以将求解答案变为求解后缀和或者求解前缀和
那么就改变了\(DP\)目标,有时候就可以帮助我们设计出可以转移的状态,最后套公式得解即可。
例题:Luogu P3600 随机数生成器 (难度较大强行插入大佬的题解:戳我1戳我2)

期望$DP$ 方法总结的更多相关文章

  1. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  2. [DP优化方法之斜率DP]

    什么是斜率dp呢 大概就把一些单调的分组问题 从O(N^2)降到O(N) 具体的话我就不多说了 看论文: http://www.cnblogs.com/ka200812/archive/2012/08 ...

  3. 动态规划_基础_最长公共子序列_多种方法_递归/dp

    D: 魔法少女资格面试 题目描述 众所周知,魔法少女是一个低危高薪职业.随着近年来报考魔法少女的孩子们越来越多,魔法少女行业已经出现饱和现象!为了缓和魔法少女界的就业压力,魔法少女考核员丁丁妹决定增加 ...

  4. 多重集组合数 (DP)

    输入: n=3 m=3 a={1,2,3} M=10000 输出: 6  (0+0+3,0+1+2,0+2+1,1+0+2,1+1+1,1+2+0) 为了不重复计数,同一种类的物品最好一次性处理好.于 ...

  5. bzoj 3622 已经没有什么好害怕的了 类似容斥,dp

    3622: 已经没有什么好害怕的了 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1213  Solved: 576[Submit][Status][ ...

  6. [Swift]LeetCode639. 解码方法 2 | Decode Ways II

    A message containing letters from A-Z is being encoded to numbers using the following mapping way: ' ...

  7. 二:状压dp

    一:状压dp的基本特征 状态压缩问题一般是指用十进制的数来表示二进制下的状态 这种用一个数来表示一组数,以降低表示状态所需的维数的解题手段,就叫做状态压缩. 常用到位运算 二:位运算 &:与运 ...

  8. 62. Unique Paths (Graph; DP)

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  9. 96. Unique Binary Search Trees (Tree; DP)

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  10. lightoj 1381 - Scientific Experiment dp

    1381 - Scientific Experiment Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lightoj.com/vo ...

随机推荐

  1. Hadoop源码学习之HDFS(一)

    Hadoop的HDFS可以分为NameNode与DataNode,NameNode存储所有DataNode中数据的元数据信息.而DataNode负责存储真正的数据(数据块)信息以及数据块的ID. Na ...

  2. TensorFlow实战之实现自编码器过程

    关于本文说明,已同步本人另外一个博客地址位于http://blog.csdn.net/qq_37608890,详见http://blog.csdn.net/qq_37608890/article/de ...

  3. linux使用tcpdump抓包工具抓取网络数据包,多示例演示

    tcpdump是linux命令行下常用的的一个抓包工具,记录一下平时常用的方式,测试机器系统是ubuntu 12.04. tcpdump的命令格式 tcpdump的参数众多,通过man tcpdump ...

  4. Lua内存分析工具

    最近给公司写了一个lua内存分析工具,可以非常方便的分析出Lua内存泄露问题,有图形化界面操作,方便手机端上传快照等功能 内存分析我是在c语言端写的,也有人写过lua端的分析工具,也蛮好用的,不过lu ...

  5. FFT模板(多项式乘法)

    FFT模板(多项式乘法) 标签: FFT 扯淡 一晚上都用来捣鼓这个东西了...... 这里贴一位神犇的博客,我认为讲的比较清楚了.(刚好适合我这种复数都没学的) http://blog.csdn.n ...

  6. Redis入门_上

    Redis是基于内存的Key-Value数据库,包含Set.String.SortedSet.List.Hash等数据结构,可用于缓存.排名.爬虫去重等应用场景. 1.思维导图 2.安装与配置 2.1 ...

  7. idea出现Error:Maven Resources Compiler: Maven project configuration required for module 'market' isn't available.

    idea出现如下错误解决办法 1.重新在Build-Rebuild project 既可以解决啦

  8. 1×1卷积的用途(Network in Network)

    1×1卷积,又称为Network in Network 如果卷积的输出输入都只是一个平面,那么1x1卷积核并没有什么意义,它是完全不考虑像素与周边其他像素关系. 但卷积的输出输入是长方体,所以1x1卷 ...

  9. 关于instrinsicContentSize, ContentHuggingPriority, ContentcompressionResistancePriority的理解

    ios 关于intrinsic理解 最近由于项目的需要想给MBProgressHUD添加一个自定义的view, 结果花费了一两个小时也没添加上去,添加上去的view没有实际的大小,即使你给他设置了一个 ...

  10. SDP(9):MongoDB-Scala - data access and modeling

    MongoDB是一种文件型数据库,对数据格式没有硬性要求,所以可以实现灵活多变的数据存储和读取.MongoDB又是一种分布式数据库,与传统关系数据库不同的是,分布式数据库不支持table-join,所 ...