제출 #877723

#제출 시각아이디문제언어결과실행 시간메모리
877723Beerus13Knapsack (NOI18_knapsack)C++14
49 / 100
2 ms480 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int N = 1e5 + 5; int n, S, val[N], w[N], sl[N]; int dp[2005]; void sub1() { cout << min(S / w[1], sl[1]) * val[1]; exit(0); } void sub23() { memset(dp, -0x3f, sizeof(dp)); dp[0] = 0; for(int i = 1; i <= n; ++i) { for(int j = sl[i]; j >= 1; --j) { for(int k = S; k >= w[i]; --k) { dp[k] = max(dp[k], dp[k - w[i]] + val[i]); } } } int ans = 0; for(int i = 1; i <= S; ++i) ans = max(ans, dp[i]); cout << ans; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> S >> n; for(int i = 1; i <= n; ++i) { cin >> val[i] >> w[i] >> sl[i]; } if(n == 1) sub1(); bool s23 = 1; for(int i = 1; i <= n; ++i) if(sl[i] > 10) s23 = 0; if(n <= 100 && s23) sub23(); 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...