제출 #1290411

#제출 시각아이디문제언어결과실행 시간메모리
1290411hssaan_arifKnapsack (NOI18_knapsack)C++20
73 / 100
1096 ms2784 KiB
#include <bits/stdc++.h> using namespace std; #define endl "\n" #define pb push_back #define int long long #define fi first #define se second const int n = 1e6 + 5, m = 2e3 + 5 , M = 1e9 + 7, LG = 20; int N , S , V[n] , W[n] , K[n] , Dp[2][m]; void solve(){ cin >> S >> N; for (int i=1 ; i<=N ; i++){ cin >> V[i] >> W[i] >> K[i]; } for (int i=0 ; i<=N ; i++){ for (int j=0 ; j<=S ; j++){ Dp[i%2][j] = -1e18; } } for (int i=0 ; i<=N ; i++){ Dp[i%2][0] = 0; } for (int i=1 ; i<=N ; i++){ for (int j=1 ; j<=S ; j++){ Dp[i%2][j] = Dp[(i-1)%2][j]; int mx = min(K[i] , j/W[i]); for (int k=0 ; k<=mx ; k++){ Dp[i%2][j] = max(Dp[i%2][j] , Dp[(i-1)%2][j - W[i]*k] + V[i]*k); } } } int ans = 0; for (int i=1 ; i<=S ; i++){ ans = max(ans , Dp[N%2][i]); } cout << ans << endl; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int ts = 1; // cin >> ts; while(ts--){ solve(); } }
#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...