题目:
题解:
背包类型:01二维费用背包体积至少是 j 最小值
初始值:f[ 0 ][ 0 ] = 0 f[ i ][ j ] =
在更新时对 v 没有限制
代码:
#include<bits/stdc++.h>
using namespace std;
int dp[80][80];
int main(){
int m,n,k;
scanf("%d%d%d",&m,&n,&k);
memset(dp,0x3f3f3f3f,sizeof(dp));
dp[0][0]=0;
for(int i=0;i<k;i++){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
for(int j=m;j>=0;j--){
//至少是j时对费用维度没有限制。
for(int e=n;e>=0;e--)dp[j][e]=min(dp[j][e],dp[max(0,j-a)][max(0,e-b)]+c);
}
}
printf("%d",dp[m][n]);
}