제출 #1297862

#제출 시각아이디문제언어결과실행 시간메모리
1297862chayiKnapsack (NOI18_knapsack)C++20
12 / 100
2 ms572 KiB
#include <bits/stdc++.h> using namespace std; struct Item { int v, w, n; }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int s, n; cin >> s >> n; vector<Item> items(n); for (int i = 0; i < n; i++) { cin >> items[i].v >> items[i].w >> items[i].n; } vector<long long int> dp(s + 1, -1); vector<long long int> re_count(s + 1); dp[0] = 0; for (int i = 0; i < n; i++) { re_count.assign(s + 1, items[i].n); vector<long long int> ndp(s + 1); ndp = dp; for (int j = 0; j <= s; j++) { if (re_count[j] > 0 && j + items[i].w <= s && ndp[j] + items[i].v > dp[j + items[i].w] && ndp[j] >= 0) { ndp[j + items[i].w] = ndp[j] + items[i].v; re_count[j + items[i].w] = re_count[j] - 1; } } swap(dp, ndp); } long long int ans = 0; for (auto i : dp) { ans = max(ans, i); } cout << ans; return 0; }
#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...