动态规划(递归)解题步骤: 1.将原问题拆分成子问题。 2.确认状态。 3.确认边界状态(初始条件)。 4.状态转移方程。 题一:【斐波那契数列】 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 分析:斐波那契数列:{0 1 1 2 ...
分类:
其他好文 时间:
2019-12-11 11:23:46
阅读次数:
93
"欢迎来看看呀" "题目链接" 一道十分巧妙的区间DP题 首先我们必须要发现一个重要的性质,不然状态转移方程会十分的复杂,那么就是删除一个字符和增加一个字符的效果是等价的 举个栗子,我们现在有一个字符串abccbdpl,要将a[bccbd]pl括起来的一段字符变成回文 变成[dbccbd]和[bcc ...
分类:
其他好文 时间:
2019-12-07 01:01:36
阅读次数:
82
"题目" 思路 显然是恰好有$\frac{n+k}{2}$组$a b$ 令$f(i,j)$表示前$i$个糖果,已经有$j$组$a b$,剩下的没管的方案数 对$a$数组从小到大排序,设$r_i$表示比$a_i$小的$b$个数,那么$r_i$是递增的 有状态转移方程$f(i,j) = f(i 1,j) ...
分类:
其他好文 时间:
2019-12-01 20:43:42
阅读次数:
112
动态规划三要素:边界、最优子问题、状态转移方程; 问题描述:现有10个矿工,5个金矿,每个金矿有对应金子和需要开采的人数,问你最多能够获得多少金子? 这是一个典型的动态规划问题,动态规划的核心是如何将问题转换为重叠的子问题,并且写出状态转移方程。 首先我们定义相应的参数: 矿工个数:n=10 金矿个 ...
分类:
其他好文 时间:
2019-12-01 00:15:19
阅读次数:
116
"欢迎来看看呀" "题目链接" 这道题代码虽然简单,但是状态转移方程还是比较难想的 首先我们可以贪心地发现一个性质,要使修理完的路花费最小,每条路必然都会是原来已经存在的高度,不然就会造成损失 接下来该怎么处理呢?考虑利用上面的性质来设计一个状态 先将输入的数据离散化一下,$b[i]$表示第$i$高 ...
分类:
其他好文 时间:
2019-11-26 23:14:09
阅读次数:
145
题目大意: 1.给出长度为n的数组,要求每m个连续的元素之间必须选一个值作为代价,求该数组的最小代价。 题解思路: 1.显然是线性dp,dp【i】表示选择第 i 个元素时的最小总代价。很明显状态转移方程为 dp[i] = min(dp[j]) + a[i]。(i - m <= j <= i - 1) ...
分类:
其他好文 时间:
2019-11-25 18:31:18
阅读次数:
81
贪心算法 定义:在每一步选择中都进行当前状态下的最优解, 从而希望导致结果是最好算法。贪心算法在最优子结构问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。举例:最小生成树的算法 (Prim MST、Kruskal MST、Dijkstra’s algorithm) 相比于动态规划 相同 ...
分类:
编程语言 时间:
2019-11-21 12:03:18
阅读次数:
94
斜率优化DP 两步骤; 1.造出DP方程; 2.通过DP方程构造出一个斜率优化方程; 具体怎么构造呢? 如 两个点 a b; 构造出 DP(a)<DP(b) 然后通过这一式子,构造出一个下凸包(后面的边的斜率大于前面的边) 只有下凸包的点是可能作为状态转移方程的转移点,其他点都不可能。 然后,构造完 ...
分类:
其他好文 时间:
2019-11-18 16:47:00
阅读次数:
55
作者:labuladong 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/solution/yi-ge-fang-fa-tuan-mie-6-dao-gu-piao-wen-ti-by-l-3/来源:力扣(Le ...
分类:
其他好文 时间:
2019-11-17 17:40:46
阅读次数:
72
显然,这是一道 DP 题。于是设 f[i] 表示第 i 分钟发出一辆车所要的最小时间,设 t为最后一个人到达车站的时间。 得到状态转移方程: 其中 k 表示上一辆末班车发车的时间。 那么最后的答案即为:ans=min{f[i]}(t≤i<t+m) i<t+m 是因为最后一个人等的时间不会超过 m 分 ...
分类:
其他好文 时间:
2019-11-10 00:02:59
阅读次数:
154