codevs3269 混合揹包 揹包DP裸題

2021-07-05 21:01:24 字數 1110 閱讀 5002

揹包體積為v ,給出n個物品,每個物品占用體積為vi,價值為wi,每個物品要麼至多取1件,要麼至多取mi件(mi > 1) , 要麼數量無限,在所裝物品總體積不超過v的前提下所裝物品的價值的和的最大值是多少?

第一行兩個數n,v,下面n行每行三個數vi,wi,mi表示每個物品的體積,價值與數量,mi=1表示至多取一件,mi>1表示至多取mi件,mi=-1表示數量無限

1個數ans表示所裝物品價值的最大值

2 10

3 7 2

2 4 -1

22
對於100%的資料,v <= 200000 , n <= 200
01揹包:倒著for。

完全揹包:正著for。

多重揹包:拆開做01揹包,或者條件滿足直接完全揹包。

**:

#include

#include

#include

#include

using

namespace

std;

const

int size=400010;

struct packl[size];

int dp[size];

int n;

void print()

void zeroonepack(int cost,int value,int v)

}void compack(int cost,int value,int v)

}void multpack(int cost,int value,int &num,int v)

int k=1;

while(k1;

}zeroonepack(num*cost,num*value,v);

}int main()

for(int i=1;i<=n;i++)

else

if(l[i].num==-1)

else

}printf("%d",dp[v]);

return0;}

/*2 10

3 7 2

2 4 233

*/

codevs 3269 混合揹包

題目描述 description 揹包體積為v 給出n個物品,每個物品占用體積為vi,價值為wi,每個物品要麼至多取1件,要麼至多取mi件 mi 1 要麼數量無限 在所裝物品總體積不超過v的前提下所裝物品的價值的和的最大值是多少?輸入描述 input description 第一行兩個數n,v,下面...

codevs 3269 混合揹包

題目描述 description 揹包體積為v,給出n個物品,每個物品占用體積為vi,價值為wi,每個物品要麼至多取1件,要麼至多取mi件 mi 1 要麼數量無限 在所裝物品總體積不超過v的前提下所裝物品的價值的和的最大值是多少?輸入描述 input description 第一行兩個數n,v,下面...

Codevs 3269 混合揹包

時間限制 1 s 空間限制 256000 kb 題目等級 鑽石 diamond description 揹包體積為v 給出n個物品,每個物品占用體積為vi,價值為wi,每個物品要麼至多取1件,要麼至多取mi件 mi 1 要麼數量無限 在所裝物品總體積不超過v的前提下所裝物品的價值的和的最大值是多少?...