제출 #1268380

#제출 시각아이디문제언어결과실행 시간메모리
1268380nathlol2Knapsack (NOI18_knapsack)C++20
100 / 100
54 ms3280 KiB
#include <bits/stdc++.h> #define int long long using namespace std; signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int s, n; cin >> s >> n; vector<int> a, b; priority_queue<pair<int, int>> pq[2001]; for(int i = 0;i<n;i++){ int p, w, m; cin >> p >> w >> m; pq[w].push({p, m}); } for(int i = 1;i<=2000;i++){ int k = 0; while(!pq[i].empty()){ auto [p, m] = pq[i].top(); while(k <= 2000 / i && m != 0){ a.push_back(p); b.push_back(i); --m; ++k; } pq[i].pop(); } } // for(auto v : a) cerr << v << ' '; // cerr << '\n'; // for(auto v : b) cerr << v << ' '; int sz = a.size(); vector<int> dp(s + 1), prev(s + 1); for(int i = 1;i<=sz;i++){ for(int j = 1;j<=s;j++){ if(j >= b[i - 1]){ dp[j] = max(prev[j], prev[j - b[i - 1]] + a[i - 1]); } } swap(dp, prev); } cout << prev[s] << '\n'; }
#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...