二刷提高课,题解目录在这里— 提高课的题解目录
将题目的问题抽象出来,就是问,氧气至少了m,氮气至少为n所用的最少气缸重量
所以初始化要注意一下,状态的属性是最小值,所以这里初始化为0x3f3f3f3f
#include<iostream>
#include<cstring>
using namespace std;
int f[30][100];
int n,m,k;
int main()
{
cin>>n>>m>>k;
memset(f,0x3f,sizeof f);
f[0][0]=0;//当不取气缸时重量为0
while(k--)
{
int a,b,c;
cin>>a>>b>>c;
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-a)][max(0,j-b)]+c);
//注意这里是可以多于n,m的
}
}
}
cout<<f[n][m];
return 0;
}