Author: lllyouo
Date: 20250223
tag: 动态规划、背包问题、二维费用背包
link: http://ybt.ssoier.cn:8088/problem_show.php?pid=1271问题描述
分析
记
设
初始状态
考虑第
- 选:前
个气缸中至少应该拥有 升氧气与 升氮气,则 - 不选:前
个气缸中至少应该拥有 升氧气与 升氮气,则
目标解为:
参考代码
cpp
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int n, x, y, a[N], b[N], c[N];
int f[N][25][85];
int main() {
cin >> x >> y >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i] >> b[i] >> c[i];
}
memset(f, 0x3f, sizeof f);
f[0][0][0] = 0;
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= x; j++) {
for (int k = 0; k <= y; k++) {
f[i][j][k] = min(f[i - 1][j][k], f[i - 1][max(0, j - a[i])][max(0, k - b[i])] + c[i]);
}
}
}
cout << f[n][x][y] << endl;
return 0;
}