期望$DP$ 方法总结
期望\(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$ 方法总结的更多相关文章
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- [DP优化方法之斜率DP]
什么是斜率dp呢 大概就把一些单调的分组问题 从O(N^2)降到O(N) 具体的话我就不多说了 看论文: http://www.cnblogs.com/ka200812/archive/2012/08 ...
- 动态规划_基础_最长公共子序列_多种方法_递归/dp
D: 魔法少女资格面试 题目描述 众所周知,魔法少女是一个低危高薪职业.随着近年来报考魔法少女的孩子们越来越多,魔法少女行业已经出现饱和现象!为了缓和魔法少女界的就业压力,魔法少女考核员丁丁妹决定增加 ...
- 多重集组合数 (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) 为了不重复计数,同一种类的物品最好一次性处理好.于 ...
- bzoj 3622 已经没有什么好害怕的了 类似容斥,dp
3622: 已经没有什么好害怕的了 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1213 Solved: 576[Submit][Status][ ...
- [Swift]LeetCode639. 解码方法 2 | Decode Ways II
A message containing letters from A-Z is being encoded to numbers using the following mapping way: ' ...
- 二:状压dp
一:状压dp的基本特征 状态压缩问题一般是指用十进制的数来表示二进制下的状态 这种用一个数来表示一组数,以降低表示状态所需的维数的解题手段,就叫做状态压缩. 常用到位运算 二:位运算 &:与运 ...
- 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 ...
- 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 ...
- lightoj 1381 - Scientific Experiment dp
1381 - Scientific Experiment Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lightoj.com/vo ...
随机推荐
- 保存文件名至txt文件中,不含后缀
准备深度学习的训练数据时,可能会用到将图片文件名保存到txt文件中,所以用python实现了该功能.输入参数只设了两个,图片存放路径,和输出的txt文件名. 代码里写死了只识别.jpg格式,并不进行目 ...
- String,StringBuffer,StringBuilder的区别
数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合. 比如数据库就是对硬盘中的数据进行有规则的管理,可以进行增删改查工作,而良好的数据结构可以优化这些操作, 也许大家会想这些和St ...
- laravel5.4+vue+vux+element的环境搭配
最近因为项目的需要,需要搭配一个这样的环境.之前做过的东西没有这样用过,在网上找了半天不是过于简单就是根本行不通,自己踩了半天的坑,终于搭配成功. 首先下载laravel5.4,直接去官网一键安装包或 ...
- 像我这样优雅地进行Spring整合MongoDB
本文重点是要将mongodb与spring整合到项目中去,在实践中发现问题,追踪问题,然后解决问题. 一.准备 Maven.Spring(spring-data-mongodb) spring Dat ...
- iOS 关于文件的操作
最近做东西,遇到了使用文件方面的问题,花了点时间把文件研究了一下! 一 关于文件路径的生成 我用的方法是: -(NSString*)dataFilePath { NSArray * paths = ...
- Jetty容器
♣Jetty和Tomcat的区别 ♣Jetty下载.安装 ♣eclipse安装jetty插件 ♣第一个jetty测试(maven+jetty) 1.Jetty和Tomcat的区别 Jetty 是一 ...
- hdu4143 A Simple Problem
A Simple Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) ...
- Shell脚本查看linux系统性能瓶颈(转)
Shell脚本查看linux系统性能瓶颈(转自:http://blog.51cto.com/lizhenliang/1687612) [root@test ~]# cat show_sys_info. ...
- # *Qt for Com 交互*
Qt COM Q_PROPERTY ActiveX properties public slots ActiveX methods signals ActiveX events Qt 属性支持的数据类 ...
- Eventlog控件的使用
CreateEventSource 已重载. 建立一个能够将事件信息写入到系统的特定日志中的应用程序. Delete 已重载. 移除日志资源. DeleteEventSource 已重载. 从事件日志 ...