摘要究竟什么时候才需要动态规划?这里介绍两个要素:最优子结构,重叠子问题。另外,还要分析一种方法——备忘录,充分利用重叠子问题性质。最优子结构利用动态规划求解时第一步是描述最优解的结构。当一个问题具有最优子结构时,提示我们动态规划可能会适用。在寻找最优子结构时,可以遵循一种共同的模式:1)问题的一个...
分类:
其他好文 时间:
2014-12-04 13:56:00
阅读次数:
161
摘要整理了矩阵链乘法的动态规划思路。题目给定n个要相乘的矩阵构成的序列,其中 i=1, 2, ..., n,矩阵Ai的维数为pi-1*pi。计算乘积 A1A2...An的最小代价的矩阵相乘循序。补充:矩阵乘法满足结合律,例如,乘积 A1A2A3A4共有五种不同加括号结合形式。不同的结合形式极大的影响...
分类:
其他好文 时间:
2014-12-04 11:36:01
阅读次数:
307
#include
#include
#include
#include
#include
using namespace std;
/*
*0-1背包问题(动态规划)
*/
vector> values;//values[i][j]表示在前i个物品中能够装入容量为j的背包中的物品的最大值 (二维数组方案二)
void knapsack(vector& w,vector& v,int n,...
分类:
其他好文 时间:
2014-12-03 23:25:41
阅读次数:
259
本题也是一种背包问题,就是需要求出有多少种组合。
本题的新意就是:
1 利用两个long long数表示大数的高位和低位就能满足不溢出了
2 高位和低位需要仔细计算好
建模:
dp[i][j]:表示计算当前i物品的时候有j钱币的时候有多少种组合。
那么状态转换:dp[i][j] = dp[i-1][j] + dp[i][j-i]//dp[i-1][j]表示前一种物品计算出的组合数,也就是不买i物品的组合数, dp[i][j-i]表示空出i钱币购买i物品的组合数
难点:
仔细观察,会发现其实不单止不用二维数...
分类:
其他好文 时间:
2014-12-03 12:26:40
阅读次数:
189
老规矩,方程什么都在注释里面。
呃,其实写斜率优化不妨像我这么写,先把会TLE的裸dp交一遍,T了以后就把方程去掉(long long)这种类型转化神马的粘到注释里面,然后j放一边,i放一边,都有的放到i的一边,然后列出yxkb,然后最大上凸,最小下凹,简单分析,不对再改,然后来俩点判断判断叉积神马的,然后一遍ac。
嘲讽一下:某同学POJ一道题调了一天至今还没过。。代码风格啊...
分类:
其他好文 时间:
2014-12-02 22:42:27
阅读次数:
206
呃,老规矩,方程、转化神马的都在代码注释里面。
不会斜率优化的移步这篇:http://blog.csdn.net/vmurder/article/details/41648159
没事闲的想看点经验的来“前一篇”http://blog.csdn.net/vmurder/article/details/41682901
#include
#includ...
分类:
其他好文 时间:
2014-12-02 22:42:06
阅读次数:
227
Minimum Path Sum
Total Accepted: 23319 Total
Submissions: 74768My Submissions
Question
Solution
Given a m x n grid filled with non-negative numbers, find a path from top left to b...
分类:
其他好文 时间:
2014-12-02 22:33:25
阅读次数:
157
题目大意:给出一排东西,现在要建造防御塔,在i处建造防御塔的花费是cost[i],所有东西的花费是他它距离右侧最近的防御塔的距离。求最小花费。
思路:很简单的斜率优化。DP方程:f[i] = f[j] + (i - j - 1) * (i - j) / 2 + cost[i]
然后简单整理一下会发现f[j] + (j + 1) * j / 2 = f[i] - i ^ 2 + i * ...
分类:
其他好文 时间:
2014-12-02 16:41:15
阅读次数:
166
题目大意:山坡上有一些仓库,下雨了,要把所有仓库中的东西转移出来,每转移一单位的东西走一个单位长度需要花费1,在i处建立一个仓库需要花费cost[i],求最小的花费。
思路:和小P的牧场好像啊。。。
记录两个前缀和,sum[i] = Σsrc[i]
_sum[i] = Σsrc[i] * pos[i],
然后DP方程:f[i] = f[j] + (sum[i] - sum[j]) ...
分类:
其他好文 时间:
2014-12-02 13:39:22
阅读次数:
238
题目大意:给出一些木板,现在要购买这些木板。购买的规则是可以一些木板一起买,然后价格是最大的长度乘最大的宽度。求购买所有木板的最小费用。
思路:如果一个木板的长也比一个木板小,宽也比一个木板小,那么这个木板就可以被排除。把所有木板按照x的长度排序,然后去掉排除的木板,然后剩下的木板就是x值下降, y值上升的木板。这样的话我们买下连续的一段的费用就是x[j] * y[i],然后DP方程就很...
分类:
其他好文 时间:
2014-12-02 10:36:03
阅读次数:
157