暴切DPのSkills?

常见的DP问题形式:

1.求某种选取方案可得的最大值、最小值

2.求某要求下的方案数

3.累计递推结果

4.数学公式、结论、期望、概率推到

5.由多部分可以组成的问题,多部分合成可得

6.背包问题及其变形

常见DP状态总结:

1.前i行的最大/最小值

2.第i行第j列之前最大/最小值

3.可以新开一个数组记录位置之间的关系,便于转移,或者优化转移 CF1183H

4.0/1表示取或不取 或者变换的方式

5.0/1/2/3...表示方向、特殊转移状态、分类讨论的情况

6.i,j...表示位置、坐标

7.选了j个/用了j个 物品数量... 时间...

8.花费、代价为j(如背包、调度类问题)

9.凑数时符合要求的子数,如符合要求的i+j=x,转移时可以将x拆分为i,j两部分合成转移

10.[i,j]区间的极值

11.区间DP的区间1个端点和1个断点,区间dp的精髓为区间长度的枚举

12.表示长度/高度/距离为i

13.一棵树中到节点u可达最大/小值

14.以该节点为根的子树的状态

15.表示从节点i到节点j

16.应题目要求可设计的某个特殊值的多少

17.节点的颜色or其他状态

18.关于期望DP
某一变量的概率乘以这一变量值,再求和,就是数学期望
期望DP,就是根据概率分析,递推求出每个状态的期望的算法

期望DP常见的状态设法及其转移:

1、设成dp[i]表示已经完成i个,要达到目标状态的期望。也就是由i状态变成目标状态的期望。

对于这种方法,转移的时候要选择刷表法倒序枚举。(根据这个状态本身就可以理解)

2、设成dp[i]表示已经完成i个的期望。

对于这种方法,转移的时候要选择填表法正序枚举。

对于以上两种方法,很多时候可以互换。但是有些时候不能互换。需要经过具体情况灵活判断。

3、设成dp[i][j]表示i种物品选择了j个的期望。

4、设成dp[i][j]表示有i个第一种物品,j个第二种物品的期望。

对于以上两种方法,就是二维的状态转移。

切DP题的步骤总结:

1.确定状态
2.根据数据范围要求进行优化、简化状态
3.根据无后效性原则设计状态转移方程
4.由方程的需要对dp数组和需用的变量、数组进行预处理
5.由题目要求,选择、筛选需要的答案

番茄&zak语录之dp:

1.对比自己与别人的思路
2.积累是创造的一大来源
3.提高熟练度
4.增加想法间的联系
5.dp的关键在于把问题拆分成若干子问题
6.启发式的题目往往会帮助拥有思维
7.掌握套路

Tips:

有时候遇到一个$DP$题,感觉状态复杂,不妨分成多个DP问题
posted @   Diamondan  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示