AcWing 1020. 潜水员(二维费用的背包)
作者:互联网
题目描述
潜水员为了潜水要使用特殊的装备。
他有一个带2种气体的气缸:一个为氧气,一个为氮气。
让潜水员下潜的深度需要各种数量的氧和氮。
潜水员有一定数量的气缸。
每个气缸都有重量和气体容量。
潜水员为了完成他的工作需要特定数量的氧和氮。
他完成工作所需气缸的总重的最低限度的是多少?
题目模型
- 集合表示:f(i,j,k)
- 集合含义:所有从前i个物品中选,且氧气含量至少是j,氮气含量至少是k的所有选法
- 集合属性:min
- 集合划分:左部分:f[i-1,j,k] 右部分:f[i-1,j-vi,k-vi]
题目代码
#include <cstring>
#include <iostream>
using namespace std;
const int N = 22, M = 80;
int n, m, K;
int f[N][M];
int main()
{
cin >> n >> m >> K;
memset(f, 0x3f, sizeof f);
f[0][0] = 0;
while (K -- )
{
int v1, v2, w;
cin >> v1 >> v2 >> w;
for (int i = n; i >= 0; i -- )
for (int j = m; j >= 0; j -- )
f[i][j] = min(f[i][j], f[max(0, i - v1)][max(0, j - v2)] + w);
}
cout << f[n][m] << endl;
return 0;
}
标签:1020,气缸,int,v1,v2,--,潜水员,AcWing 来源: https://www.cnblogs.com/esico/p/16342511.html