제출 #630590

#제출 시각아이디문제언어결과실행 시간메모리
630590chjiaoKnapsack (NOI18_knapsack)C++14
37 / 100
1085 ms212 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++) { cin >> items[i][2] >> items[i][0] >> items[i][1]; //weight, number, value } vector<int> dp(limit+1, -1); dp[0]= 0; for (int t=0; t<type_num; t++) { int weight, num, val; weight = items[t][0]; num = items[t][1]; val = items[t][2]; for (int j=0; j < num; j++) { for (int i=limit - weight; i>=0; i--) { if (dp[i]>=0) dp[i+weight] = max(dp[i+weight], dp[i] + val); } } } cout << *max_element(dp.begin(), dp.end()) << endl; }
#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...