제출 #780262

#제출 시각아이디문제언어결과실행 시간메모리
780262christinelynnKnapsack (NOI18_knapsack)C++17
29 / 100
1 ms212 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> pll; const ll MAXN = 1e5 + 5; const ll MAXT = 2e3 + 5; ll n, t, li, ei, ki, dp[MAXT]; void update2(ll a, ll b, ll low, ll high) { // {Spread, Energi} for (int i = low; i <= high; ++i) { if (i < b) { continue ; } dp[i] = max(dp[i], dp[i-b] + a); } } void update(ll a, ll b, ll k) { // {Spread, Energi, Jumlah} ll low = 0, high = t; while(true) { low = max(high - (k * b) + 1, 0ll); update2(a, b, low, high); if (low == 0) { break ; } high = low - 1; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> t >> n; for (int i = 0; i < n; ++i) { cin >> li >> ei >> ki; ki = min(ki, t / ei); update(li, ei, ki); } cout << dp[t] << "\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...