题意:给定身上的4种硬币,分别是1 ,5 ,10, 25面额各有多张,要求组成面额p的硬币尽可能多。输出组成p的4种硬币各自的数量。思路:多重背包,300+ms。用01背包+二进制的方法。记录下所有的硬币的个数以及4种硬币分别的个数,注意初始化dp数组的不同之处。 1 #include 2 #in....
分类:
其他好文 时间:
2015-05-09 18:51:00
阅读次数:
184
背包九讲里面的多重背包问题。每一块积木有高度和数量,也有最大能到的高度位置限制。我们DP前首先要对高度限制进行排序,因为从直观角度说,我们也需要先处理较小的能到高度的积木,这样才能取到最大值。例如第一个高度是11,限制高度是100,第二个的限制高度是10,那如果直接处理,第二个不会被处理到。
#include
#include
#include
#define max(x,y)(x>y?x:y...
分类:
其他好文 时间:
2015-05-08 10:59:02
阅读次数:
211
戳这里:2844//复习一下背包问题//题意:告知你 N 中硬币的面值和数量,求能组成多少不同的面额,面额限制在区间 [1, M] 中//思路:用背包覆盖一边,取硬币的空间为它自身的价值,则当 dp[i] == i 时,说明空间为 i 的背包背填满,即可以组成面额为 i 的情况 1 #include...
分类:
其他好文 时间:
2015-05-07 21:55:34
阅读次数:
122
简单的多重背包问题,要使设备的体积之和尽量均匀的分成两部分,设总体积为v2 则该问题就转化成了一个背包容量为v/2的多重背包问题费用和价值都为设备的体积,根据num[i] * cost[i] 是否小于 v / 2转化为01背包和完全背包做 1 #include 2 #include 3 #inclu...
分类:
其他好文 时间:
2015-05-01 14:40:15
阅读次数:
99
混合背包(多重背包+完全背包)—— POJ 3260...
分类:
其他好文 时间:
2015-04-28 09:54:09
阅读次数:
130
分析:多重背包问题。这里直接转换为01背包,为使用二进制。
#include
using namespace std;
int price[101];
int weight[101];
int number[101];
int dp[101];
int main()
{
int C,n,m;
int i,j,k;
cin>>C;
while(C--)
{
cin>>n...
分类:
其他好文 时间:
2015-04-24 19:19:37
阅读次数:
132
题意:给你N种不同的设备,每种设备的价值为V,每种设备的数量为M,请尽量把他们分为总价值相近的两堆,为两堆的价值分别是多少,大的在前面输出。
分析:看到网上很多版本,可以用母函数、多重背包解决;在这里用了0-1背包解决。
实现:把总价值的一半看为背包容量,价值看为质量,价值也看为体积;最后可以求出接近总价值一半的价值,另一半就用总价值减去背包得出的一半的价值即可,注意背包求出的总价值的一般可能...
分类:
其他好文 时间:
2015-04-24 19:16:19
阅读次数:
148