
动态规划
文章平均质量分 68
入门dp及例题
舍舍发抖
路漫漫其修远兮
展开
-
BUCTOJ周赛(5)问题 E: 数学&(线性DP+LCS)
题目链接 (题目好像现时,不过可以参考着学一下这种类型) 这个题目是正常的线性动态规划问题,对于这个问题就是公共子序列和(ICS)的变形题目,所以就相当于是对线性dp的补充,在这再详细的解释一下动态方程。 这个是北工大的官方题解,写的比较粗糙,只适合大佬阅读,所以我就简单补充一下自己的理解。 动态规划问题关键在于列出动态方程,动态方程的关键在于考虑继承、更新以及初始化这些问题。 那么如何考虑这些问题呢? 首先说一下dp数组下标的含义,及解释用法: 1.dp[i][j]表示第一行的第i个元素,第二行的j个原创 2021-10-28 22:29:21 · 240 阅读 · 0 评论 -
动态规划-线性dp
文章目录1.简介1.1 什么是动态规划?1.2什么时候使用动态规划2.斐波那契数列及延伸问题(dp引入)2.1斐波那契数列2.2问题引入2.21递归分治解决2.22利用记忆化搜索降低时间复杂度3.最短向下/上路径问题3.1数字三角形问题4.最长曼哈顿路径问题4.1 问题描述 LMP(Longest Manhattan Path)4.2利用动态规划解决4.3记忆化搜索4.4拓展问题5.最长上升子序列(LIS Longest Increasing Subsequence)5.1问题描述5.2 正常考虑思路5.3原创 2021-10-20 13:28:34 · 907 阅读 · 0 评论 -
hdu7131 Nun Heh Heh Aaaaaaaaaaa (字符序列匹配、线性dp)
字符串的匹配子序列问题 题目链接 首先区分一点 子串(Substring)就是原串中连续的一部分 子序列(Subsequnce)就是原串中任意抽出任意多个字符(可以不连续,但顺序不能改变) 根据题意可知,需要删除原串中任意个字符后,能构成多少个,以"nunhehheh"为前缀,个数任意大于零个"a"为后缀的字符序列 这个题目考虑一下,可以分为两步来求解 前找出前缀的部分,然后找后缀 a 的个数并选任意个进行排列组合 而寻找前缀和后缀的个数就是利用,前缀和 + dp 的思想来做 对于dp的分类就是原创 2021-10-12 00:22:15 · 471 阅读 · 0 评论 -
背包问题(01、完全、多重、混合)
1.01背包 2.完全背包 3.混合背包 4.混合背包 背包问题最开始理解可以解决贪心解决不了的采药问题,采用动态规划。不好理解的地方在于动态方程。 01背包 f[i][j] = max(f[i-1][j],f[i-1][j-v]+w); //左表示不要这个物品,右表示要这个物品 01背包的动态规划方程 #include<iostream> #include<algorithm> using namespace std; int n,m; int f[100.原创 2021-05-06 20:41:40 · 125 阅读 · 0 评论