动态规划的题目,有时可能你推出了递推式,但是由于时间复杂度过高,或者dp数组过大,而导致TLE或MLE。这时,我们就需要用到动态规划优化
优化有两种,分别是状态优化和转移优化
状态优化用于优化空间,有两种方法,一是去除冗余的状态,二是重新定义状态。去除冗余状态最简单的例子比如滚动数组求解,重定义状态最简单的例子就是01背包,dp{i}{j}代表第i个物品在空间大小为j的背包下能装的最大价值,我们可以状态优化为dp{i}代表空间大小为i的背包能装下的最大价值。
而转移优化是用来优化时间,有以下四类题:一是最长上升子序列O(nlogn)求法,二是单调(队列/栈)优化,三是斜率优化,四是四边形不等式
这时候我们就可以根据不同的题目要求,选择相应的方式进行求解。
具体对应例题将在本博客的后续进行详细解答~
如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢