动态规划
文章平均质量分 65
LB_莫贺延碛
没智商,没毅力,仅仅有一点点运气。
努力向各位前辈大牛学习。
展开
-
poj 1260
思路: 设珍珠按价格排序 为原创 2014-09-05 10:33:47 · 437 阅读 · 0 评论 -
最长路径问题dp
看了Geek_ling的博文后写的代码,原先也写过最长路径问题(uva10000)原创 2014-09-19 13:52:05 · 1406 阅读 · 0 评论 -
hdu1176 免费馅饼
这种题目和数塔问题很相似,唯一要说的可能就是注意边界了。(谁让我只刷水题来着) 状态方程也没必要说了,应该直接能看出来 #include #include #include #include #include #include using namespace std; const int maxn = 100000 + 10; const int limit = 12; int原创 2015-04-30 21:25:56 · 382 阅读 · 0 评论 -
hdu1087 super jumping
注意:这道题不是让求最长不降子序列,这是求出在不降序列中 序列和的最大值 #include #include #include #include using namespace std; const int maxn = 1000 + 10; int num[maxn]; int dp[maxn]; //dp[i] 到达结点序号为 i 时的最大值,序号从1开始 int N; vo原创 2015-04-30 21:20:12 · 368 阅读 · 0 评论 -
hdu 1114 Piggy-Bank
#include #define MIN -1600000 using namespace std; const int maxn = 10000 + 1000; int value[550]; int weight[550]; int dp[maxn]; int E,F,N,vo; int casenum; void init() { cin>>E>>F>>N; vo = F - E;原创 2015-04-30 21:43:31 · 407 阅读 · 0 评论 -
hdu 1203 I NEED A OFFER!
01背包问题,求最大成功概率,就用1减去所有学校都拒绝的最小概率即可,dp[i][j] 表示前i个学校 投了j美元 所得的最小失败率,状态方程: dp[j] = min(dp[j], dp[j - cost[i]] * poss[i]); #include #include #include #include #include #include #include usi原创 2015-04-30 21:31:31 · 329 阅读 · 0 评论 -
hdoj 1003 连续最大子数组 分治法 & dp法
题目大意:给出一个序列a ,寻找出a的和最大的非空连续子数组 1.使用分支策略求解 (有算导的直接看算导好了,ch4) 假设寻找的子数组A[low...high]为最大子数组,使用分支策略,意味着我们需要将原数组分为两个规模近似相同的子数组,那么我们可以找到数组a的中间位置mid 则数组A的位置可能有三种情况: 1.完全位于子数组a[low...mid] 中 2.完全位于子数组a[m原创 2015-04-01 22:01:24 · 686 阅读 · 0 评论 -
最长递增子序列
问题 给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8},长度为4. 解法1:最长公共子序列法 这个问题可以转换为最长公共子序列问题。如例子中的数组A{5,6, 7, 1, 2, 8},则我们排序该数组得到数组A‘{1, 2, 5, 6, 7, 8转载 2015-05-12 18:46:44 · 348 阅读 · 0 评论 -
poj 1661 help Jimmy
把资料上的解释摘下来了: n 此题目的“子问题”是什么呢? n Jimmy 跳到一块板上后,可以有两种选择,向左走或向右走。走到左端和走到右端所需的时间,容易算出。 n 如果我们能知道,以左端为起点到达地面的最短时间,和以右端为起点到达地面的最短时间,那么向左走还是向右走,就很容选择了。 n 因此,整个问题就被分解成两个子问题,即Jimmy 所在位置下方第一块板左端为起点到原创 2015-05-12 11:44:48 · 421 阅读 · 0 评论