제출 #683065

#제출 시각아이디문제언어결과실행 시간메모리
683065vjudge1Knapsack (NOI18_knapsack)C++17
100 / 100
61 ms2896 KiB
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <set>
#include <string>
#include <cmath>
#include <map>
#include <set>
#include <queue>
#include <cstring>
#include <bitset>
using namespace std;

int x,n;
const int maxn = 2e3;
vector<pair<long long, long long>> item[maxn+5];
vector<long long> opt[maxn+5];
long long dp[maxn+5];
void solve()
{
    cin >> x >> n;
    long long ans = 0;
    for(int i = 1; i <= n; i++)
    {
        long long c,v,k;
        cin >> v >> c >> k;
        item[c].push_back({v,k});
    }
    for(int i = 1; i <= x; i++)
    {
        sort(item[i].begin(),item[i].end());
        long long sum = 0;
        opt[i].push_back(sum);
        for(int p = 1; p <= x / i; p++)
        {
            if(item[i].empty()) break;
            sum += item[i].back().first;
            opt[i].push_back(sum);
            item[i][item[i].size()-1].second--;
            if(item[i][item[i].size()-1].second == 0) item[i].pop_back();
        }
    }
    for(int i = 1; i <= x; i++)
    {
        for(int p = x; p >= i; p--)
        {
            for(int upper = 1; upper < opt[i].size() && upper * i <= p; upper++)
            {
                dp[p] = max(dp[p],dp[p-upper * i] + opt[i][upper]);
            }
        }
    }
    cout << dp[x];

}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    solve();
    return 0;

}

컴파일 시 표준 에러 (stderr) 메시지

knapsack.cpp: In function 'void solve()':
knapsack.cpp:48:38: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |             for(int upper = 1; upper < opt[i].size() && upper * i <= p; upper++)
      |                                ~~~~~~^~~~~~~~~~~~~~~
knapsack.cpp:23:15: warning: unused variable 'ans' [-Wunused-variable]
   23 |     long long ans = 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...