r3 4
2 12 5
3 82 0
1 12 8
3 24 4
2 11 1
1 11 0
2 15 3
2 01 0
2 12 0
2 21 1
2 03 2
2 12 1
1 52 8
3 23 8
4 95 10
sample output513
-1-1
題目總共有三種取法:
至少取乙個:f[i][k]=max(f[i][k],f[i-1][k-w[j]]+v[j],f[i][k-w[j]]+v[j])
max中包括不取,只取乙個和取任意個。
最多取乙個:f[i][k]=max(f[i][k],f[i-1][k-w[j]]+v[j])
包括不取以及只取其中乙個。
取任意個:f[i][k]=max(f[i][k],f[i][k-w[j]]+v[j])
就是體積要大於0的01揹包問題
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
using
namespace std;
#define maxn 105
int w[
105]
,v[105];
//重量 價值
int f[maxn]
[maxn]
;int
max(
int a,
int b,
int c)
intmain()
else
if(s==1)
}else
if(s==2)
}if(f[n]
[t]>-1
)printf
("%d\n"
,f[n]
[t])
;else
printf
("-1\n");
}return0;
}
通天之分組揹包 分組揹包
本人水平有限,題解不到為處,請多多諒解 本蒟蒻謝謝大家 題目 傳送門 分組揹包的模板 偽 1 for int i 1 i 組數 i 6 7 直接套模板即可。code 1 include2 pragma gcc optimize 3 3const int n 1e5 10 4 using namesp...
混合揹包 分組揹包
啥是混合揹包呢,就是包含01揹包,完全揹包,多重揹包。有n件物品,揹包承重最大為m,w i 代表重量,v i 代表價值,s i 代表種類。s i 1,可用1次,s i 0,可用無限次,s i 0,可用s i 次.解法 見 const int maxn 1e4 5 int n,m,dp m 1 w n...
揹包問題克星 分組揹包
有n件物品,告訴你這n件物品的重量以及價值,將這些物品劃分為k組,每組中的物品互相衝突,最多選一件,求解將哪些物品裝入揹包可使這些物品的費用綜合不超過揹包的容量,且價值總和最大。演算法 首先判斷乙個分組當中的一件物品,同01揹包一樣,此物品存在兩種狀態,取與不取,若取此物品,則繼續判斷下一組的第一件...