제출 #1359221

#제출 시각아이디문제언어결과실행 시간메모리
1359221atif2077Knapsack (NOI18_knapsack)C++20
12 / 100
1 ms1092 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

ll f(ll i, ll s, ll& n, vector<vector<ll>>& a, vector<vector<int>>& dp)
{
    if (i == n) return 0;
    if (s < 0) return (ll) -1e18;

    if (dp[i][s] != -1) return dp[i][s];

    ll pick = 0;
    ll noPick = 0;

    if (a[i][2]) 
    {
        a[i][2]--;
        pick = a[i][0] + f(i, s - a[i][1], n, a, dp);
        a[i][2]++;
    }
    noPick = f(i + 1, s, n, a, dp);

    return dp[i][s] = max(pick, noPick);
}

signed main() 
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    ll s, n;
    cin >> s >> n;

    vector<vector<ll>> a(n, vector<ll> (3, 0));

    for (ll i = 0; i < n; i++)
    {
        for (ll j = 0; j < 3; j++)
        {
            cin >> a[i][j];
        }
    }

    vector<vector<int>> dp(n + 1, vector<int> (s + 5, -1));
    cout << f(0, s, n, a, dp);

    return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…