poj 2392 多重揹包

2022-06-03 14:24:08 字數 1030 閱讀 8103

題意:有幾個磚,給出高度,能放的最大高度和數目,求這些磚能壘成的最大高度

依據lim排個序,按一層一層進行揹包

1 #include2 #include3 #include4 #include5 #include6 #include7

using

namespace

std;

8const

int maxn=40005;9

intn,m,t;

10int

dp[maxn];

11struct

node

1219

}node[maxn];

20bool

cmp(node a,node b)

2124

//0-1揹包,代價為cost,獲得的價值為weight

25void zeroonepack(int cost,int weight,int

lim)

2630

31//

完全揹包,代價為cost,獲得的價值為weight

32void completepack(int cost,int weight,int

lim)

3337

38//

多重揹包

39void multiplepack(int cost,int weight,int amount,int

lim)

4051 zeroonepack(amount*cost,amount*weight,lim);//

這個不要忘記了,經常掉了52}

53}54int

main()

5569

int maxh=node[n-1

].l;

70int ans=0;71

for(i=0;i<=maxh;i++)

7275 printf("%d"

,ans);76}

77return0;

78 }

POJ 2392 多重揹包

題意 k個塊,給出每個塊的高度hi,數量ci,不能超過的高度 求這些塊可以組成的最大高度乙個。思路 大致可看這個題是乙個揹包,揹包的承重是高度。對於每個物品,有他的價值是高度,還有限定的數量,看到這裡就是乙個多重揹包,然後對於每個物品還有乙個限制是對於他的特定高度,這種怎麼處理其實很簡單吧。dp應該...

POJ 2392 多重揹包

題意 有k種塊,每種高度為hi,數量為ci,拿這k種塊去建塔,每種塊再塔中所處的高度不能超過ai,問塔最高能有多高 思路 首先因為每種塊所出的高度不能超過ai,那麼這個塔的最大高度不會超過max ai 以max ai 為陣列大小,為了保持結果能最優應保證ai小的在下層,所以應該以ai從小到大排序,之...

POJ 2392 多重揹包

送牛上太空的一道題 有k種型別的方塊,每行表示方塊高度,能堅持的極限高度,方塊個數 一維dp i 陣列表示高度i是否可行,初始為0 關鍵 為三層for迴圈,外層i看不同的方塊 方塊已經排過序 第二層j遍歷同一種方塊的個數,第三層k遍歷高度 從低高度到高高度正向做應該也行,但是寫起來比較複雜,反向去做...