https://blog.csdn.net/kabini/article/details/2311946
题目大意:
水房能容纳饮料的总量是V,有一批饮料,每种饮料单个容量都是2的方幂,每种饮料信息如下:(Si,Vi,Ci,Hi)分别对应(名字,容量,满意度),求在满足总容量等于V的情况下,求满意度的最大值。
分析:
1、动态规划解法
没有悬念,优化问题就用动态规划、贪心算法、分支限界轮番上阵就好了。设Opt(V’,i)表示从i到n-1种饮料中,Ci为第i种饮料可能的最大数量,算出总量为V’的方案中满意度之和的最大值。那么递归式就应该是:
Opt(V’,i)=max{ k * Hi+Opt(V’-Vi * k,i+1)}(k=0,1,2…,Ci,i=0,1,2…,n-1)
2、动态规划法的变形:备忘录法
3、贪心算法
书中的贪心解法似曾相识,把信息按照饮料的容量排序(其中设我们有n0种容量为20的饮料)
然后按照下面的顺序进行贪心选择:
(1) 饮料总量为1,从容量为20的饮料中选出快乐指数最大的。
(2) 饮料总量为2,从容量为21的饮料中选出快乐指数最大的(设为H1),与容量为20的饮料中快乐指数最大的(设为H0),比较H1和2* H0,取出其中最大者为当前最佳选择
(3) 继续进行下去,直到求出Opt(V,0)