A9445 二维费用的背包问题(01 背包基础)

\(f(i,j)\) 表示体积 \(i\) 质量 \(j\) 的答案。
转移方式不变,可以实现 \(O(nVM)\)

#include<bits/stdc++.h>
using namespace std;
const int N=103;
int n,V,M,dp[N][N];
int main(){
    scanf("%d%d%d",&n,&V,&M);
    for(int i=1,val,mass,volume;i<=n;i++){
        scanf("%d%d%d",&volume,&mass,&val);
        for(int j=M;j>=mass;j--) for(int k=V;k>=volume;k--)
            dp[j][k]=max(dp[j][k],dp[j-mass][k-volume]+val);
    }
    printf("%d\n",dp[M][V]);
    return 0;
}

posted @ 2026-02-15 16:19  2025ing  阅读(0)  评论(0)    收藏  举报