Submission #1326875

#TimeUsernameProblemLanguageResultExecution timeMemory
1326875DvcMinhKnapsack (NOI18_knapsack)C++20
49 / 100
6 ms8056 KiB
// vegnim #include <bits/stdc++.h> using namespace std; typedef unsigned int ui; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair <int,int> pii; typedef pair <ll,ll> pll; #define pb push_back #define mp make_pair #define fi first #define se second #define setpre(n) fixed << setprecision(n) #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define mask(n) (1LL << (n)) #define getbit(x, b) (((x) >> (b)) & 1) #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define FORd(i, a, b) for (int i = (a); i >= (b); i--) #define REP(i, n) for (int i = 0; i < (n); i++) #define task "" #define dbg if (DEBUG_MODE) const bool DEBUG_MODE = 1; const int maxN = 1e5+5, maxS = 2005; int s,n,v[maxN],w[maxN],k[maxN]; namespace sub1 { void solve() { ll ans = 0; while (k[1]-- && s - w[1] >= 0){ ans += v[1]; s -= w[1]; } cout << ans; } } namespace sub2 { const int maxN = 105; int dp[maxN][maxS]; void solve() { FOR(i, 1, n){ FOR(j, 0, s){ dp[i][j] = dp[i-1][j]; if (j >= w[i]) dp[i][j] = max(dp[i][j], v[i] + dp[i-1][j-w[i]]); } } cout << dp[n][s]; } } namespace sub3 { const int maxN = 1e3+5; int dp[maxN][maxS]; void solve() { int m = n; FOR(i, 1, n){ REP(j, k[i]-1){ m++; v[m] = v[i]; w[m] = w[i]; } } n = m; FOR(i, 1, n){ FOR(j, 0, s){ dp[i][j] = dp[i-1][j]; if (j >= w[i]) dp[i][j] = max(dp[i][j], v[i] + dp[i-1][j-w[i]]); } } cout << dp[n][s]; } } signed main() { ios_base::sync_with_stdio(NULL); cin.tie(nullptr); // freopen("inp.txt","r",stdin); cin >> s >> n; bool issub2 = (n <= 100); bool issub3 = (n <= 100); FOR(i, 1, n){ cin >> v[i] >> w[i] >> k[i]; if (k[i] != 1) issub2 = 0; if (k[i] > 10) issub3 = 0; } if (n == 1){ sub1::solve(); return 0; } if (issub2){ sub2::solve(); return 0; } if (issub3){ sub3::solve(); return 0; } 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...