Submission #850597

#TimeUsernameProblemLanguageResultExecution timeMemory
850597vjudge1Knapsack (NOI18_knapsack)C++14
100 / 100
38 ms5200 KiB
#include<bits/stdc++.h>
#define int long long
#define ii pair<int,int>
#define ff first
#define ss second
#define all(x) x.begin(), x.end()

using namespace std;
const int maxn = 1e4 + 5, mod = 1e9 + 7;
int n, m, q, ans;
int dp[maxn];
vector<ii> a, sw[maxn];

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin >> m >> n;
    for (int i = 1; i <= n; i++)
    {
        int val, w, cap;
        cin >> val >> w >> cap;
        sw[w].emplace_back(val, cap);
    }
    for (int i = 1; i <= m; i++)
    {
        sort(all(sw[i]), greater<ii>());
        int can = m / i;
        for (auto p : sw[i])
        {
            int u = p.ff, v = p.ss;
            int take = min(can, p.ss), bit = 1;
            can -= take;
            while (take)
                if (take >= bit)
                    take -= bit,
                    a.emplace_back(bit * p.ff, bit * i),
                    bit *= 2;
                else break;
            if (take) a.emplace_back(take * p.ff, take * i);
            if (can == 0) break;
        }
    }
    for (int i = 1; i <= m; i++) dp[i] = -1e18;
    for (auto p : a)
    {
        for (int i = m; i >= p.ss; i--)
            dp[i] = max(dp[i], dp[i - p.ss] + p.ff),
            ans = max(ans, dp[i]);
    }
    cout << ans;
}

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:31:17: warning: unused variable 'u' [-Wunused-variable]
   31 |             int u = p.ff, v = p.ss;
      |                 ^
knapsack.cpp:31:27: warning: unused variable 'v' [-Wunused-variable]
   31 |             int u = p.ff, v = p.ss;
      |                           ^
#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...