有 n
'>n
n 種物品和乙個容量是 v
'>v
v 的揹包,每種物品都有無限件可用。
第 i'>i
i 種物品的體積是 v
i'>vi
vi,價值是 w
i'>wi
wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。
輸出最大價值。
輸入格式
第一行兩個整數,n,v
'>n,v
n,v,用空格隔開,分別表示物品種數和揹包容積。
接下來有 n
'>n
n 行,每行兩個整數 vi,
wi'>vi,wi
vi,wi,用空格隔開,分別表示第 i
'>i
i 種物品的體積和價值。
輸出格式
輸出乙個整數,表示最大價值。
資料範圍
0v≤1000
'>000,wi≤
1000
'>00輸入樣例
4 5
1 22 4
3 44 5
輸出樣例:10
ac**1;
#includeusingnamespace
std;
typedef
long
long
ll;#define heap(...) priority_queue<__va_args__ >
#define heap(...) priority_queue<__va_args__,vector<__va_args__ >,greater<__va_args__ > >template
inline t min(t &x,const t &y)
template
inline t max(t &x,const t &y)
ll read()
#define read read()
const ll inf =1e18;
const
int maxn = 1e6 + 7
;const
int mod = 1e9 + 7
;const
int n = 1001
;int
v[n],w[n];
intdp[n];
intmain()
for(int i=1;i<=n;i++)
}printf("%d
",dp[m]);
return
0;
}
ac**2(簡化版)
#includeusingnamespace
std;
typedef
long
long
ll;#define heap(...) priority_queue<__va_args__ >
#define heap(...) priority_queue<__va_args__,vector<__va_args__ >,greater<__va_args__ > >template
inline t min(t &x,const t &y)
template
inline t max(t &x,const t &y)
ll read()
#define read read()
const ll inf =1e18;
const
int maxn = 1e6 + 7
;const
int mod = 1e9 + 7
;const
int n = 1001
;int
v[n],w[n];
intdp[n];
intmain()
for(int i=1;i<=n;i++)
}printf("%d
",dp[m]);
return
0;
}
完全揹包dp
完全揹包類似題目 不過求最小值 杭電1114 揹包九講 基本形式 有 n 種物品和乙個容量為 v 的揹包,每種物品都有無限件可用。放入第 i 種 物品的費用是 c i 價值是 w i 求解 將哪些物品裝入揹包,可使這些物品的耗 費的費用總和不超過揹包容量,且價值總和最大。基本思路 這個問題非常類似於...
DP完全揹包
written with stackedit.每件物品不限數量 轉化為0 1揹包 每個物體盡可能多放 why?遞推式為 f i j max,kw i wf i,j max forall kw i f i,j max kw i w其他思路和01揹包相同.檢查每乙個k不會造成越界的k.0 1揹包就是完全...
完全揹包 貪心 dp
考慮以下問題 有n nn種物品,第i ii種有z iz i zi 個,價值是y iy i yi 重量是w iw i wi 那麼把這些物品放入大小為x xx的揹包,的最大價值是多少 n,yi 50 wi,z i 10 9 n,y i leq 50 w i,z i leq 10 9 n,yi 50w i...