제출 #1255865

#제출 시각아이디문제언어결과실행 시간메모리
1255865dxfKnapsack (NOI18_knapsack)C++17
0 / 100
0 ms324 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; using namespace std; typedef long long ll; #define change_io() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) #define el endl #define all(x) begin(x), end(x) #define pb push_back #define mp make_pair #define INF 1000000005 #define LLINF 1e18 #define MOD 1000000007 #define MOD9 998244353 // remove single val from multiset with -> os.find_by_order(os.order_of_key(x)) typedef tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; typedef tree<ll, null_type, less_equal<ll>, rb_tree_tag, tree_order_statistics_node_update> ordered_multiset; typedef tree<pair<ll, ll>, null_type, less<pair<ll, ll>>, rb_tree_tag, tree_order_statistics_node_update> ordered_pair_set; const ll N5 = 1e5 + 5; const ll N6 = 1e6 + 5; const ll NN5=2e5+5; const ll N3=1e3+5; ll dp[2005] {}; void solve() { int s, n; cin >> s >> n; map<int, set<array<ll, 2>>> items; for (int i = 0; i < n; ++i) { ll w,v,k; cin >> w >> v >>k; items[w].insert({-1*v, k}); } for (int i = 1; i <= s; ++i) { if (items[i].empty()) continue; ll considered = 0; while (!items[i].empty() && considered < s/i) { auto num = (*items[i].begin()); items[i].erase(items[i].begin()); if (num[1] != 1) { items[i].insert({num[0], num[1]-1}); } for (int j = s; j >= i; --j) { dp[j] = max(dp[j], dp[j-i]-num[0]); } considered++; } } ll ans = 0; for (int i = 0; i <= s; ++i) { ans = max(ans, dp[i]); } cout << ans << el; } int main() { //freopen("problemname.in", "r", stdin); //freopen("problemname.out", "w", stdout); change_io(); ll T; T=1; //cin>>T; while (T--) { solve(); } 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...