首页 > 其他分享 >闫式DP分析法

闫式DP分析法

时间:2022-11-17 21:13:02浏览次数:68  
标签:问题 闫式 分析法 子集 集合 DP

闫式DP分析法

闫式DP分析法的核心思想是从集合的角度来分析DP问题。

所有的DP问题都可以使用闫式DP分析法进行分析。(经过70道题目验证通过)

1.选择DP问题:背包模型
2.序列DP问题
3.状态压缩问题
4.状态机问题
5.树形DP问题
6.区间DP问题
7.斜率优化问题

我们可以把做过的所有DP问题都看作是有限集上的最值问题。

DP问题 == 有限集上的最值问题

然而,由于这个有限集的数量级很高(通常是指数级别的),
所以肯定不能暴力地进行枚举,时间复杂度会过高。则需要使用DP来进行优化,DP的两个阶段:

1.化零为整,寻找共性——状态表示

所谓 化零为整 是指我们对于零星的情况,不是一个一个去枚举,
而是每次根据这些零星的情况的某些特性去枚举一类情况(即一个子集)
f(i)需要考虑的问题:
表示的是一个怎样的集合?
f(i)保存的值是什么意思(max/min/count/…)?与集合有什么关系?

2.化整为零,寻找不同——状态计算

如何去求f(i)呢?
我们要把它们划分成若干个不同的子集来求,每一个子集分别去求。需要满足的条件有:

不重复(可以不满足,例如求min,max。但是求count的时候,就不能重复)
不遗漏
例如,我们假设f(i)表示的是某个集合的最大值,那么可以每个子集的最大值的最大值。

那么问题来了,怎么进行集合f(i)的划分呢?
寻找最后一个不同点。

注意:

DP的优化是在DP的朴素分析完成之后才进行的。所以得先想好朴素分析,不要急于求成;
DP问题的所有优化都是对代码做等价变形;

来自 https://blog.csdn.net/yc_cy1999/article/details/106106912

标签:问题,闫式,分析法,子集,集合,DP
From: https://www.cnblogs.com/Diamondan/p/16900958.html

相关文章