Submission #881094

#TimeUsernameProblemLanguageResultExecution timeMemory
881094skywwlaKnapsack (NOI18_knapsack)C++17
49 / 100
1040 ms10576 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("-Ofast") #pragma GCC optimize ("-Ofast") #pragma GCC optimize(3) #pragma GCC optimize("inline") #pragma GCC optimize("-fgcse") #pragma GCC target("avx","sse2") #pragma GCC optimize("-fgcse-lm") #pragma GCC optimize("-fipa-sra") #pragma GCC optimize("-ftree-pre") #pragma GCC optimize("-ftree-vrp") #pragma GCC optimize("-fpeephole2") #pragma GCC optimize("-ffast-math") #pragma GCC optimize("-fsched-spec") #pragma GCC optimize("unroll-loops") using namespace std ; using ll = long long ; const int maxN = 5005, M = 1e5 + 5 ; const ll mod = 1e9 + 7 ; int S , N, V[M], W[M], K[M] ; vector<map<int,ll>> dp(2001) ; ll solve(int i, int j) { if (i == N) return 0ll ; if (dp[j].count(i)) return dp[j][i] ; ll ret = 0 ; for (ll c = 0 ; c <= K[i] && c * W[i] <= j ; c++) { ret = max(ret, solve(i + 1, j - c * W[i]) + c * V[i]) ; } dp[j][i] = ret ; return ret ; } int32_t main() { ios::sync_with_stdio(false) ; cin.tie(nullptr) ; cin >> S >> N ; for (int i = 0 ; i < N ; i++) { cin >> V[i] >> W[i] >> K[i] ; } cout << solve(0, S) ; 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...