【OJ】动态规划
文章平均质量分 52
VitaLemon__
JavaWeb Android
展开
-
hdoj1087 Super Jumping! Jumping! Jumping!(DP)
题意: 并不是从start一步一步地走、一直走到end然后取最大值这么简单,而是在某一点上可以一次性走N步到达另一个店,比如这里“1”可以直接走到“2”(不过一定是从左到右,不能回头),不过这样的结果只是3了,不是最大值。所以,这是一个DP问题。状态转移方程先写出来,等下再分析:// origin[]为原数组,dp[]是在origin[]上进行动态规划的数组 // dp[i]表示“走到下标为i的这原创 2016-03-23 10:03:59 · 732 阅读 · 0 评论 -
hdoj1176 免费馅饼(DP)
题解: 动态规划,这一题实质上跟2084(数塔)那题是一样的,因为这一题可以转化成数塔问题,“馅饼掉下来的时刻”就是“塔的深度”,也就是dp数组的第1维;而第2维是一样的,都是表示位置。考虑题意给出的输入: Sample Input 6 5 1 4 1 6 1 7 2 7 2 8 3 0 那么我们可以构造出一个数塔: 第0层: 0原创 2016-03-23 01:41:56 · 533 阅读 · 0 评论 -
hdoj2084 数塔
题解:DP的经典题目之一,从塔的最底层一直往上走,到达顶部后途中累加的和最大的就是所要求的值。在这里,可以设置二维数组dp[i][j],表示“走到第i层、第j个元素时可以获得的最大值”。这里有两个关键的地方: 考虑的对象是“走到了某个位置”,而不是“从某个位置开始走”。这也是DP比如背包问题里面的一个重要思想。这样的话,状态转移方程就是: dp[i][j] += max(dp[i+1][j], dp原创 2016-03-23 01:17:00 · 406 阅读 · 0 评论