
动态规划
文章平均质量分 94
其中汇聚了大部分动态规划题
9osh
这个作者很懒,什么都没留下…
展开
-
Leetcode. 3n 块披萨
如果 [1, i-1] 范围的PIZZA 不选去那么就代表的是在 [i, r] 区间内选 k 个PIZZA。首先,面对我们环形结构的第一个策略就是无视防御,先思考它为链形结构的状态。也就是我们的目标是覆盖区间 [1, N], 而我们每一次的状态是[l, r]。在状态的择取上,我们往往选择最小的覆盖集合。我们发现我们只关注从[1, r]的区间,所以我们可以固定l = 1。这很容易理解,如果第 r 块PIZZA不选去,那么 dp[l][r][k-1] 就是 dp[l][r-1][k-1]。原创 2023-08-18 15:20:20 · 162 阅读 · 0 评论 -
区间DP讲义
所以,我们可以给出 动规数组 d[i][j][k]表示将 [i, j] 分成 k 段的代价。原创 2023-08-10 15:32:23 · 229 阅读 · 0 评论 -
经典题:编辑距离
通过上述的分析,我们也得知了如果要获取 dp[i][j] 则需要知道 dp[i-1][j], dp[i][j-1], dp[i-1][j-1] 三个状态值。从各大OJ平台对其的收录,我们可以知道这道题是多么的经典。首先,删除操作跟插入操作一样,是可以在任何情况执行的。注:#表示空字符串,2表示我们在计算的,1表示我们需要获取的。的最小操作次数,而这是我们可以知道的。原创 2023-08-05 09:58:11 · 274 阅读 · 0 评论 -
动态规划基础讲义
本专栏将介绍动态规划(Dynamic Programming, DP)及其解决的问题。动态规划是一种通过把原问题求解复杂问题的方法。由于动态规划并不是某种具体的算法,,因此它会出现在各式各样的数据结构中,与之相关的题目种类也更为繁杂。在 OI 中,计数等非最优化问题的递推解法也常被不规范地称作 DP,因此本专栏将它们一并列出。事实上,动态规划与其它类型的递推的确有很多相似之处,学习时可以注意它们之间的异同。原创 2023-07-27 13:42:04 · 247 阅读 · 1 评论 -
记忆化搜索
在我们求解 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 时,我们很容易获取到了答案是8,但是如果我们说在上述计算式上再 + 1,那么我们也可以很快回答出答案是9。在求解动态规划的问题时,记忆化搜索与递推的代码,在形式上是高度类似的。这道题我们从人类的贪婪角度,我们自然希望是"低价买入,高价卖出"了。事实上在 n > 1 时,我们的合并操作 O(N) 的时间可以通过记忆化去消除成为 O(1) 的时间。确切地说,此时我们的递推应该被称之为动态规划,再细致一下是背包DP中的一般的背包问题。原创 2023-08-02 13:11:29 · 55 阅读 · 0 评论 -
动态规划例题解析
动态规划什么时候用?怎么用?这里有快速判断的方式方法,弱相关,记录状态,不同角度设计转移方程,优化转移方程。一气呵成,这是一份简单的入门指引原创 2023-07-17 21:27:23 · 456 阅读 · 1 评论