题目大意:有些按照一字排列的牧场,每一个牧场有一个费用和放牧数量。现在要在一些牧场上建造控制站,目的是控制所有的牧场,建立控制站的基础费用就是每个牧场的费用,然后每一个牧场需要付这个牧场的放养数量*它与右边相邻的控制站的距离。求最小的费用。
思路:直接弄有些不好弄,需要两个前缀和来进行差分。
sum[i] = Σsrc[i]
_sum[i] = Σsrc[i]*i
然后DP方程就是...
分类:
其他好文 时间:
2014-12-02 10:36:59
阅读次数:
170
动态规划Given a stringS, find the longest palindromic substring inS. You may assume that the maximum length ofSis 1000, and there exists one unique longes...
分类:
其他好文 时间:
2014-12-01 20:48:25
阅读次数:
250
问题一 Best Time to Buy and Sell Stock
Say you have an array for which the ith element is the price of a given stock on day i.
If you were only permitted to complete at most one transaction (ie, buy on...
分类:
其他好文 时间:
2014-11-30 23:19:36
阅读次数:
232
最长上升子序列(Longest Increasing Subsquence)是指对一个序列,其中满足i
LIS普遍求法为动态规划。有两种算法。
第一种比较好写,复杂度O(n^2)。
设原序列为a[]。所有下标从1开始(即[1,n])。定义dp[i]为以a[i]结尾的最长上升子序列的长度。很容易得到转移方程:dp[i] = max{1, dp[j] + 1} 且 j
dp[i] = 1;...
分类:
编程语言 时间:
2014-11-30 12:37:30
阅读次数:
198
一看这道题总觉得是字符串处理问题,其实是需要建模动态规划法的题解。
动态规划法的建模都感觉是最难的一关了,当然最简单是参考别人的,自己建模真的很难。
本题的建模就是利用一个二维数组palin[i][j],代表j个字符,就是如果字符串的起点下标为i,那么i到i+j-1字符的最小修改值是多少。
也可以用递归的思维从这个字符串一步一步往更小的字符串递推出来。
最终优化程序,使用滚动数组变二维数组维一维。
下面程序作出详细注解:...
分类:
其他好文 时间:
2014-11-30 12:36:33
阅读次数:
112
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后...
分类:
编程语言 时间:
2014-11-29 17:16:40
阅读次数:
168
数字三角形:定义状态(i,j):表示当前所处位置定义指标函数 d(i,j) :表示从格子(i,j)出发能得到的最大和找到状态转移方程: d(i,j)=a(i,j)+max{d(i+1,j),d(i+1,j+1)}总状态为O(n^2),每个状态决策为O(1),总的时间复杂度为O(n^2)。方法:直接递...
分类:
其他好文 时间:
2014-11-28 22:37:23
阅读次数:
295