动态规划
文章平均质量分 63
背包问题,线性DP,区间DP,计数类DP,数位统计DP,状态压缩DP,树形DP,记忆化搜索等
小呆鸟_coding
阿里云专家博主,在读机器人研究生,喜欢编程,通过写文章记录自己的生活,以及学习的点点滴滴。希望我们共勉。一起努力冲向远方
展开
-
【33. 0 1 背包问题】
如何将现有的集合划分为更小的子集,使得所有子集都可以计算出来.一般原则:不重不漏,不重不一定都要满足(一般求个数时要满足)为什么可以这样变形呢?,没得选,因此前 i 个物品最优解。最优解,但题目只需要求得最终状态。,实际上只需要做一个等价变形。(2)当前背包容量不够。.........原创 2022-08-19 15:16:53 · 155 阅读 · 5 评论 -
【34. 完全背包】
【代码】【34. 完全背包】原创 2022-08-23 20:39:41 · 165 阅读 · 5 评论 -
【35. 多重背包】
优化(二进制优化)在完全背包中,通过两个状态转移方程:再来看下多重背包:怎么比完全背包方程比较就多出了一项?那为什么完全背包不会有最后一项?我们首先确认三点:(1)我们知道转化成01背包的基本思路就是:判断每件物品我是取了你好呢还是不取你好。(2)我们知道任意一个实数可以由二进制数来表示,也就是20~2k其中一项或几项的和。(3)这里多重背包问的就是每件物品取多少件可以获得最大价值。分析:如果直接遍历转化为01背包问题,是每次都拿一个来问,取了好还是不取好。那么根据数据范围,这样的时间复杂度是,也就原创 2022-09-01 15:42:58 · 161 阅读 · 0 评论 -
【36. 分组背包问题】
第i组第k个。原创 2022-09-01 19:49:58 · 162 阅读 · 0 评论 -
【37. 线性DP(数字三角形)】
线性DP有可能是一维线性和二维线性动态规划是多维状态,可能是一维、二维、三维等DP的下标一般是从1开始一般就是就是,向上爬的思路可以不需要考虑边界问题。而当向下走的时候,需要考虑边界问题。也就是对于f[2][1]的时候,f[1]f[0]并没有设置这个值,默认为0,题中的数字有负数,则会出现错误的最大值。需要对于f进行重置,置为。原创 2022-09-02 22:03:22 · 201 阅读 · 0 评论 -
【38. 最长上升子序列】
哪些题目适合用DP算法解决?满足最优子结构大问题可以由小问题推出,大问题与小问题求解思路一致。满足无后效性一旦f(n)确定,后续我们直接调用它的值就可以,而不用关心它是怎样过来的设计好状态想办法把当前局面给表达出来设计好状态转移方程可以从两个方面考虑,我从哪里来,或者我到哪里去。原创 2022-09-08 22:50:26 · 166 阅读 · 2 评论 -
【39. 最长公共子序列】
/字符串a和b int f [ N ] [ N ];i原创 2022-09-03 16:12:14 · 175 阅读 · 0 评论 -
【40. 石子合并(区间DP)】
在定义状态的时候,与线性DP和背包问题不一样,这里是定义了一个区间。原创 2022-09-06 15:58:20 · 286 阅读 · 5 评论 -
【41. 最短编辑距离(线性DP)】
状态划分 以对a中的第i个字母操作不同划分有三种操作,所以有三个子集(增加、删除、更改)考虑状态转移的时候先考虑如果我没有进行这个操作应该是什么状态然后考虑你进行这一步操作之后会对你下一个状态造成什么影响然后再加上之前状态表示中你决策出来的那个DP属性,这样就可以自然而然地搞出来转移方程啦背包问题分类方式:第i个物品选几个,按照不同的选法进行分类最长公共子序列:看最后俩个字母的情况进行分类最长上升子序列:看倒数第二个数选哪个进行分类数字三角形:枚举最后一步怎么走下来进行分类综上。原创 2022-09-09 09:49:41 · 159 阅读 · 0 评论 -
【42. 编辑距离】
【代码】【42. 编辑距离】原创 2022-09-09 15:50:53 · 121 阅读 · 2 评论 -
【43. 数位统计DP(计数问题)】
这样就是求出来了[1,n],然后如果我想求[l,r]的用一下前缀和就搞定了。比如我要找第4位上出现的1的数有几个。就得先求1在每一个位置上出现的次数。中的数中1出现的个数。原创 2022-09-13 18:22:52 · 249 阅读 · 5 评论 -
【44. 状态压缩DP(蒙德里安的梦想)】
所有剩余位置能否填充满竖着的小方块。可以按列来看,每一列内部所有连续的空着的小方块需要是偶数个。这是一道动态规划的题目,并且是一道 状态压缩的dp:用一个N位的二进制数,每一位表示一个物品,0/1表示不同的状态。因此可以用0→2N−1(N二进制对应的十进制数)0→2N−1(N二进制对应的十进制数)中的所有数来枚举全部的状态。既然第 i 列固定了,我们需要看 第i-2 列是怎么转移到到第 i-1列的(看最后转移过来的状态)。原创 2022-09-15 22:10:58 · 256 阅读 · 0 评论 -
【45. 状态压缩DP(最短Hamilton路径)】
一个代码有一个虚拟空间,假设内存4g,那么代码对应的虚拟空间是2^32,整个内存空间分为上下俩个部分,上面是栈空间,底下是堆空间,所有开在函数内部的变量或数组开到栈里面,所有开在静态变量或者全局变量的会开在堆里,c++默认的栈空间是4兆,此时如果把很大数组放在主函数,那么栈可能爆掉而且开在全局,默认初始化值为0。原创 2022-09-18 14:42:33 · 554 阅读 · 14 评论 -
【46. 树形DP(没有上司的舞台)】
【代码】【46. 树形DP(没有上司的舞台)】原创 2022-09-21 10:35:26 · 144 阅读 · 3 评论 -
【47. 记忆化搜索(滑雪)】
【代码】【47. 记忆化搜索(滑雪)】原创 2022-09-21 15:38:16 · 134 阅读 · 1 评论