Submission #1198732

#TimeUsernameProblemLanguageResultExecution timeMemory
1198732phantomstar3.14Knapsack (NOI18_knapsack)C++20
0 / 100
52 ms122744 KiB
/////////////////////////////////////////// // // // CODE BY THE phantomstar3.14 // // // /////////////////////////////////////////// #include <bits/stdc++.h> using namespace std; #define int long long int #define ull unsigned long long std::mt19937_64 rng(std::chrono::steady_clock::now().time_since_epoch().count()); constexpr int V = 1E9; constexpr int MAXN=1e9; const int mod=1e9+7; vector<int> primes; vector<bool>prime(MAXN+1,true); void sieve() { prime[0] = prime[1] = false; for (int p = 2; p * p < MAXN; p++) { if (prime[p]) { for (int i = p * p; i < MAXN; i += p) prime[i] = false; } } for (int p = 2; p < MAXN; p++) { if (prime[p]) primes.push_back(p); } } void solve() { int s,n; cin >> s >> n ; map<int,vector<pair<int,int>>> v; vector<vector<int>> dp(n+1, vector<int>(s+1,0)); for(int i=0; i<n; i++) { int val, weight, k; cin>>val>>weight>>k; if(weight<=s) v[weight].push_back({val, k}); } int curr=1; for(auto [w, vec] : v) { //if(curr==n) break; sort(vec.rbegin(), vec.rend()); for(int j=0; j<=s; j++) { dp[curr][j]=max(dp[curr][j], dp[curr-1][j]); if(j<w) continue; int total=0; for(int i=0; i<vec.size(); i++) { //if(total>s) break; int num=0; while(((num+1)*w)<=j and (num+1)<=vec[i].second) { num++; dp[curr][j]=max(dp[curr][j], dp[curr][j-num*w] + num*vec[i].second); } } } curr++; } int ans=0; for(int i=0; i<=n; i++) { for(int j=0; j<=s; j++) ans=max(ans, dp[i][j]); } cout<<ans<<"\n"; } int32_t main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); auto begin = std::chrono::high_resolution_clock::now(); //freopen("poetry.in", "r", stdin); //freopen("poetry.out", "w", stdout); int t=1; //cin >> t; while (t--) { solve(); } auto end = std::chrono::high_resolution_clock::now(); auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin); cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\n"; 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...