제출 #1278987

#제출 시각아이디문제언어결과실행 시간메모리
1278987coderg300711Knapsack (NOI18_knapsack)C++20
12 / 100
2 ms572 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=2024; int n, s,dp[N]; priority_queue<int> pq[N]; vector<int> a[N]; void solve() { cin>>s>>n; for(int i=1;i<=n;i++) { int v,w,k; cin>>v>>w>>k; k=min(k,s/w); while(k--) { pq[w].push(v); if((int)pq[w].size()>s/w)pq[w].pop(); } } for(int w=1;w<=s;w++) { while(pq[w].size()) { a[w].push_back(pq[w].top()); pq[w].pop(); } reverse(a[w].begin(),a[w].end()); } for(int w=1;w<=s;w++){ for(int i=s;i>=w;i--) { int k=0,v=0; for(auto x:a[w]){ k++; v+=x; if(i-w*k<0)break; dp[i]=max(dp[i],dp[i-w*k]+v); } } } cout<<dp[s]<<'\n'; } signed main() { ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); solve(); 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...