题目
题解思路
因为定义是至少 所以小于目标体积的数也是需要转移的
小于0是有实际意义的
求最小值要把除初始状态以外的所有状态初始化为+∞
另外还有不同体积的初始化技巧
在图片中
AC代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
const int INF = 0x3f3f3f3f;
int f[110][110];
int main ()
{
ios::sync_with_stdio(false);
int n,m,k;
cin>>m>>n>>k;
for (int j = m ; j >= 0 ; j-- )
{
for (int p = n ; p >= 0 ; p-- )
{
f[j][p] = INF ;
}
}
f[0][0] = 0 ;
for (int i = 1 ; i <= k ; i++ )
{
int a,b,c;
cin>>a>>b>>c;
for (int j = m ; j >= 0 ; j-- )
{
for (int p = n ; p >= 0 ; p-- )
{
f[j][p] = min( f[j][p] , f[ max(j-a , 0 )][max(p-b , 0 )] + c );
}
}
}
cout<<f[m][n]<<"\n";
return 0 ;
}