제출 #1169442

#제출 시각아이디문제언어결과실행 시간메모리
1169442I_FloPPed21Knapsack (NOI18_knapsack)C++20
73 / 100
10 ms776 KiB
#include <iostream> #include <vector> using namespace std; long long n,s; struct produs { long long val,g,k; }; vector<produs>sume; long long dp[4000]; void citeste() { cin>>s>>n; for(int i=1; i<=n; i++) { long long a,b,val; cin>>val>>a>>b; while(b&&a<=s&&sume.size()<=10000) { if(b%2==1) { sume.push_back({val,a,1}); b--; b/=2; a*=2; val*=2; } else { sume.push_back({val,a,2}); b-=2; b/=2; a*=2; val*=2; } if(a>s) break; } } } long long ans=0; void get_dp() { for(auto [val,b,c]:sume) { for(int actual=s; actual>=0; actual--) { for(int d=1; d<=c; d++) { if(actual+d*b<=s) { dp[actual+d*b]=max(dp[actual+d*b],dp[actual]+val*d); } } } } for(int i=0; i<=s; i++) ans=max(ans,dp[i]); cout<<ans; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); citeste(); get_dp(); 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...