我是靠谱客的博主 老实老鼠,最近开发中收集的这篇文章主要介绍dp的划分,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

依据:1.不重 2.不漏
不过并不是这两个条件每一次都需要满足
在求数量的时候1一定要满足,再求min和max的时候1可以不满足
但是不漏一定要遵守

一般的dp划分依据:
1.按照最后一步来划分

dp的计算顺序问题:
(按照拓扑序)

dp状态一般怎么表示:
如果是网格图就是f[i,j]
线性图就是f[i]
如果是背包问题的话,就是第一维是物品,第二维是体积

背包问题的循环顺序不能随便变,但是一般的只要符合拓扑序就行
本质上来说dp是图论的一小部分
百分之九十的dp都能转化成最短路
当我们的图,是拓扑图的时候,可以把最短路问题转化成dp问题
当我们的dp设置完之后,发现它的状态不是拓扑图了,我们可以用最短路解决

状态表示:每一个都代表一个集合,它必须是有意义的,而且每一个都能推出来我们的答案
状态计算:找到一种方式能够算出来每个集合的值

对于lis,除了贪心之外,还有一些数据结构可以优化成nlogn,比如(离散化)线段树,平衡树,

最后

以上就是老实老鼠为你收集整理的dp的划分的全部内容,希望文章能够帮你解决dp的划分所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部