Vijos P1334 NASA的食物计划

解法

二维费用01背包问题

解法就是先枚举物品再枚举条件这里两个条件所以要枚举两个for

代码

#include <bits/stdc++.h>
using namespace std;
int dp[500][500],v[100],m[100],w[100];
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int vv,mm;
	cin>>vv>>mm;
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	cin>>v[i]>>m[i]>>w[i];
	for(int i=0;i<n;i++)
	for(int j=vv;j>=v[i];j--)
	for(int k=mm;k>=m[i];k--)
	dp[j][k]=max(dp[j][k],dp[j-v[i]][k-m[i]]+w[i]);
	cout<<dp[vv][mm];
}
posted @ 2019-01-09 16:14  baccano!  阅读(136)  评论(0编辑  收藏  举报