Submission #630597

#TimeUsernameProblemLanguageResultExecution timeMemory
630597chjiaoKnapsack (NOI18_knapsack)C++14
73 / 100
1092 ms7108 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); // freopen("Knapsack.in", "r", stdin); // freopen("Knapsack.out", "w", stdout); int limit, type_num; cin >> limit >> type_num; // map<int, vector<tuple<int, int, int>>> by_weight; //{weight, {value, amount}}, 根据weight从小到大排序 vector<vector<int>> items(type_num, vector<int>(3)); for (int i = 0; i < type_num; i++) { int weight, num, val; cin >> val >> weight >> num; if (weight>limit) continue; items[i][0] = weight; items[i][1] = num; items[i][2] = val; } vector<int> dp(limit+1, -1); dp[0]= 0; for (int t=0; t<items.size(); t++) { int weight, num, val; weight = items[t][0]; num = items[t][1]; val = items[t][2]; for (int i=limit - weight; i>=0; i--) { if (dp[i]>=0) { for (int k=1; k <= num && i+weight*k <= limit; k++) { dp[i+weight*k] = max(dp[i+weight*k], dp[i] + k*val); } } } } cout << *max_element(dp.begin(), dp.end()) << endl; }

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:27:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     for (int t=0; t<items.size(); t++) {
      |                   ~^~~~~~~~~~~~~
#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...