摘要: 题目地址:http://poj.org/problem?id=2392题目大意:有一头奶牛要上太空,他有很多种石头,每种石头的高度是hi,但是不能放到ai之上的高度,并且这种石头有ci个将这些石头叠加起来,问能够达到的最高高度。解题思路:先将石头可以放置的最大高度按从小到大的顺序进行排序,因为只有先放置最大高度最低的才能得到最优解,也就是说让一种石头尽可能高的放。最大值必须初始化为0,因为存在高度为0的情况。#include#include#includeusing namespace std;int dp[400005];struct node{ int h,a,c; bool operat 阅读全文
posted @ 2012-08-18 17:09 一生挚爱 阅读(203) 评论(0) 推荐(0)
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2639第K优解问题其基本思想是将每个状态都表示成有序队列,将状态转移方程中的max/min转化成有序队列的合并。这里仍然以01背包为例讲解一下。首先看01背包求最优解的状态转移方程:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}。如果要求第K优解,那么状态f[i][v]就应该是一个大小为K的数组f[i][v][1..K]。其中f[i][v][k]表示前i个物品、背包大小为v时,第k优解的值。 “f[i][v]是一个大小为K的数组”这一句,熟悉C语言的同学可能比较 阅读全文
posted @ 2012-08-18 10:55 一生挚爱 阅读(144) 评论(0) 推荐(0)