1 条题解
- 
  0
经典的多重背包。
#include <bits/stdc++.h> using namespace std; int q[2005],w[2005], c[2005],dp[2005][2005]; //dp[i][j]:前i种物品中容量为j的最大价值 int main(){ int n,v; cin >> n >> v; for(int i = 1;i <= n;i++){ cin >> q[i] >> w[i] >> c[i]; } for(int i = 1;i <= n;i++){//第i个物品 for(int j = 1;j <= v;j++){//容量为j for(int k = 0;k <= q[i] && (w[i] * k <= j);k++){//拿k个 dp[i][j] = max(dp[i][j],dp[i - 1][j - w[i] * k] + c[i] * k); } } } cout << dp[n][v]; return 0; } 
- 1
 
信息
- ID
 - 3280
 - 时间
 - 1000ms
 - 内存
 - 256MiB
 - 难度
 - 5
 - 标签
 - 递交数
 - 24
 - 已通过
 - 15
 - 上传者