动态规划
文章平均质量分 64
Alex_Dong
这个作者很懒,什么都没留下…
展开
-
hdu 1087题解
hdu 1087 题解 题目概要:一串串连续的递增数列中,求最大的数列之和 分析:首先感觉和求最长递增子序列的经典题型相似,所以就考虑用动态规划来解此题。 程序说明:首先将数存在数组v[]中,dp[i]表示的是以第i个数为结尾的数列的最大和。状态转移方程是:dp[i] = max(dp[i], dp[j]+v[i]);其中dp[j]+v[i]表示的是当v[j] 时间原创 2014-01-16 22:15:02 · 614 阅读 · 0 评论 -
hdu 2844题解
hdu 2844 题解 题目大意:给定面值不同,数量不同的纸币,求所有可表示的钱数的总个数。 题目分析:完全背包问题,但是物品总数太多,需要先采用二进制优化一下。 代码解析: #include #include #include #include #include #include #include using namespace std;原创 2014-01-19 22:12:10 · 637 阅读 · 0 评论 -
hdu 2845 题解
hdu 2845 题解 题目大意:同一行里必须隔一个及以上个数来取数,行与行之间也是隔一行及以上。 题目解析:想要求得一行里能取到的最大和值可以通过动态转移方程 dp[i] = max(dp[i-1], dp[i-2] + a[i] ); 得到每行的最大值之后,就是开始求最后的结果,此时把得到的最大值数组再通过如上的转移方程得到最终结果。 二维动态用两次一维动态完成。能这么原创 2014-01-19 23:47:50 · 454 阅读 · 0 评论 -
hdu 4001解题报告
-hdu- 4001 解题报告 题目大意:有n块大小、高度不一的矩形砖块,且类型为0,1,2三种,分别有不同叠放顺序。求最终能够得到的最大高度。 题目解析:dp动态规划的类型,但先要进行对砖块按长度、宽度和高度排序。接下去就是分三种情况进行dp,状态dp[i]表示的是第i块砖块放置的位置的高度。 状态转移方程是dp[i]=max(dp[i],dp[j]+block[i].heig原创 2014-02-11 22:27:26 · 548 阅读 · 0 评论 -
hdu 4104
先排序,再动态规划,需要优化 #include #include #include #include #include #include using namespace std; const int maxn = 1e3+10; const int maxm = 1e6+10; int a[maxn]; int f[maxm]; int main() { int N, k, i, j,原创 2014-07-24 11:24:23 · 630 阅读 · 0 评论 -
hdu 4699
两个栈,光标前的元素一个栈,光标后的元素一个栈 sum[i]记录从1~i个元素之和,动态规划的状态方程是 dp[i] = max( dp[i-1], sum[i] ),dp[i]记录前i个元素的最大和值。 #include #include #include #include #include #include #include using namespace std; cons原创 2014-07-28 11:17:32 · 629 阅读 · 0 评论