二进制优化 0pts 求救
查看原帖
二进制优化 0pts 求救
804115
yzm0325楼主2024/8/5 16:38
#include <bits/stdc++.h>
#define maxn 100010
using namespace std;
int n, W, v[maxn], w[maxn], size, dp[maxn];
int main() {
    cin >> n >> W;
    for (int i = 1; i <= n; i++) {
        int c = 1, p, h, k;
        cin >> p >> h >> k;
        while (k > c) {
            k -= c;
            w[++size] = c * p;
            v[size] = c * h;
            c *= 2;
        }
        w[++size] = p * k;
        v[size] = h * k;
    }
    for(int i = 1; i <= size; i++)
        for(int j = W; j >= w[i]; j--)
            dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
    cout << dp[W];
    return 0;
}
2024/8/5 16:38
加载中...