kamacoder-solutions
kamacoder-solutions copied to clipboard
feature:Update 0056.携带矿石资源.md C++题解
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int c,n; // 容量 和 种类数量
void chose(){
vector<int>weight(n);
vector<int>value(n);
vector<int>nums(n);
for(int i = 0;i < n;i++){
cin >> weight[i];
}
for(int i = 0;i < n;i++){
cin >> value[i];
}
for(int i = 0;i < n;i++){
cin >> nums[i];
}
//标准的01背包
vector<int>dp(c+1,0);
for(int i = 0;i < n;i++){
for(int j = c;j >= weight[i];j--){
for(int k = 0;k <= nums[i] && (j - k*weight[i]) >= 0;k++){
dp[j] = max(dp[j], dp[j-k*weight[i]] + k*value[i]);
}
}
}
cout << dp[c] << endl;
}
int main(){
cin >> c >> n;
chose();
return 0;
}