http://poj.org/problem?id=1821 当我们在考虑内层循环j以及决策k的时候,我们可以把外层变量i看作定值,以此来优化dp状态转移方程。 题意 有n个工人准备铺m个连续的墙,每个工人有他必须图的一面墙壁Si,最多连续铺Li,每铺一个就花费Ci的钱,问最多要多少钱; 朴素算法很 ...
分类:
其他好文 时间:
2018-09-14 00:08:25
阅读次数:
188
题目 解析 状态:dp[i]表示到达第i个阶梯需要的最小花费; 状态转移方程:dp[i] = min( dp[i 2], dp[i 1] ) + cost[i]; C++ class Solution { public: int minCostClimbingStairs(vector& cost) ...
分类:
其他好文 时间:
2018-09-11 16:08:47
阅读次数:
133
不能放弃治疗,每天都要进步!! 什么时候使用动态规划呢? 1. 求一个问题的最优解 2. 大问题可以分解为子问题,子问题还有重叠的更小的子问题 3. 整体问题最优解取决于子问题的最优解(状态转移方程) 4. 从上往下分析问题,从下往上解决问题 5. 讨论底层的边界问题 实例1:割绳子问题 题目:给你 ...
分类:
编程语言 时间:
2018-09-08 15:36:36
阅读次数:
227
解题思路 首先很容易就想到了一个二维的朴素的 $dp$。 设 $dp[i][j]$ 表示第 $i$ 个位置的电话线杆的高度为 $j$ 时的最小花费,就需要枚举第 $i$ 个电话线杆、第 $i$ 个电话线杆的高度 $j$、第 $i-1$ 个电话线杆的高度 $k$。 状态转移方程如下 $$dp[i][j ...
分类:
其他好文 时间:
2018-09-04 10:40:58
阅读次数:
170
方格游戏:http://codevs.cn/problem/2853/ 这和传纸条和noip方格取数这两个题有一定的相似性,当第一眼看到的时候我们就会想到设计$dp[i][j][k][l]$(i,j表示一个人走到 i 行 j 个点,而另一个人走到 k 行第l个点)这么一个状态。 转移方程当然是$dp ...
分类:
其他好文 时间:
2018-09-02 11:03:35
阅读次数:
215
##算法 裸01背包。 ##分析 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品(部分或全部)恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-w[i] ...
分类:
编程语言 时间:
2018-08-26 01:16:22
阅读次数:
276
状压dp还不熟啊。。。 这是状压dp例题后面的基础练习题了。可以看“互不侵犯”这道题。 状态表示方法类似,只不过没有第三维即数量的限制:设$dp[i][j]$为前$i$行,第$i$行状态为$j$时的方案数。 状态转移方程简直不能再简单:$dp[i][k] = sum(dp[i 1][j])$,其中$ ...
分类:
其他好文 时间:
2018-08-25 00:45:28
阅读次数:
161
貌似和石子合并差不多 ~~可能是我见的题太少了,所以都差不多~~ OK 算法分析 首先不难看出这是一道区间DP,那么,按照本蒟蒻的意思 区间DP==三个循环 接下来就是推方程的事情了 设f[i][j]为释放掉i~j号囚犯的最小花费,那么,容易得出 f[l][r]=min(f[l][r],f[l][k ...
分类:
其他好文 时间:
2018-08-20 21:56:07
阅读次数:
160
相关题型 参考 "Maximum Submatrix & Largest Rectangle" "[leetcode]221. Maximal Square" "Maximum sum rectangle in a 2D matrix | DP 27" ...
分类:
其他好文 时间:
2018-08-19 22:39:46
阅读次数:
249
题解 将费用提前计算可以得到状态转移方程: $F_i = \min(F_j + sumT_i * (sumC_i - sumC_j) + S \times (sumC_N - sumC_j)$ 把方程进行分离, 得到 $S\times sumC_j + F_j = sumT_i \times sum ...
分类:
其他好文 时间:
2018-08-19 20:12:52
阅读次数:
225