#include "bits/stdc++.h"
using namespace std;
const int maxn = 25000;
int N, V;
int w[maxn], v[maxn], dp[maxn];
int main(){
cin >> N >> V;
int cnt = 0;
for (int i = 1; i <= N; i++){
int wi, vi, s;
cin >> wi >> vi >> s;
int k = 1;
while(k <= s){
cnt++;
w[cnt] = wi * k;
v[cnt] = vo * k;
s -= k;
k *= 2;
}
if (s > 0){
cnt++;
w[cnt] = wi * s;
v[cnt] = vi * s;
}
}
for (int i = 1; i <= N; i++){
for (int j = V; j >= w[i]; j--){
dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
}
}
cout << dp[V];
return 0;
}
多重背包二进制优化
最新推荐文章于 2023-09-17 19:20:12 发布