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
- 标签
- 递交数
- 22
- 已通过
- 13
- 上传者