AcWing 1020. 潜水员 二维费用背包

//体积最多是j 全部为0,v>=0
//体积恰好为j f[0][0]=0,f[i]=无穷,v>=0
//体积至少是j f[0][0]=0,f[i]=无穷,体积为负数时于0取大 
#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 j=n; j>=0; j--)
            for(int k=m; k>=0; k--)
                f[j][k]=min(f[j][k],f[max(0,j-v1)][max(0,k-v2)]+w);
    }
    cout<<f[n][m]<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11980567.html