有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。
第 i 件物品的體積是 vi,價值是 wi。
求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。
輸出最優選法的方案數。注意答案可能很大,請輸出答案模 1e9+7的結果。
輸入格式
第一行兩個整數,n,v,用空格隔開,分別表示物品數量和揹包容積。
接下來有 n 行,每行兩個整數 vi,wi,用空格隔開,分別表示第 i 件物品的體積和價值。
輸出格式
輸出乙個整數,表示 方案數 模 109+7 的結果。
資料範圍
0解題思路:新建乙個g陣列,記錄下揹包裝該體積的物品的方案數,並且求方案數,f陣列要記得初始化為負無窮。
code:
#include
#include
using
namespace std;
typedef
long
long ll;
const
int maxn=
1e3+7;
const
int mod=
1e9+7;
ll f[maxn]
,g[maxn]
;ll v[maxn]
,w[maxn]
;int
main()
}
ll ans=
0,maxx=0;
for(
int i=
0;i<=m;i++
) maxx=
max(maxx,f[i]);
for(
int i=
0;i<=m;i++
)
cout<}
動態規劃 揹包九講 揹包問題求具體方案
有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。第 i 件物品的體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出字典序最小的方案。這裡的字典序是指 所選物品的編號所構成的序列。物品的編號範圍是 1 n。輸入格式 第一行兩個整數,...
動態規劃之揹包九講之七 揹包問題求方案數
題目 有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。第 i 件物品的體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出 最優選法的方案數。注意答案可能很大,請輸出答案模 1e9 7 的結果。輸入格式 第一行兩個整數,n,v,用空...
動態規劃之揹包九講之八 揹包問題求具體方案
題目 有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。第 i 件物品的體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出 字典序最小的方案。這裡的字典序是指 所選物品的編號所構成的序列。物品的編號範圍是 1 n。輸入格式 第一行兩...