제출 #1266854

#제출 시각아이디문제언어결과실행 시간메모리
1266854BalsaKnapsack (NOI18_knapsack)C++20
73 / 100
151 ms327680 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

void solve() {
    ll S, n;
    cin >> S >> n;

    vector<ll> V(n+1), W(n+1), K(n+1);
    for (ll i = 1; i <= n; i++) {
        cin >> V[i] >> W[i] >> K[i];
        K[i] = min(K[i], 2000LL);
    }

    vector<vector<ll>> dp(n+1, vector<ll>(S+1, 0));

    for (ll i = 1; i <= n; i++) {
        for (ll w = 1; w <= S; w++) {

            for (ll j = 0; j <= K[i]; j++) {
                if (w - j*W[i] < 0) break;
                dp[i][w] = max(dp[i][w], dp[i-1][w-j*W[i]] + j*V[i]);
            }
        }
    }

    
    // for (ll i = 0; i <= n; i++) {
    //     for (ll w = 0; w <= S; w++) {
    //         cout << dp[i][w] << ' ';
    //     }
    //     cout << '\n';
    // }

    cout << *max_element(dp[n].begin(), dp[n].end()) << '\n';
}

int main() {
    // freopen("cowmbat.in", "r", stdin);
    // freopen("cowmbat.out", "w", stdout);

    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...