#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int f[101][101][6];
int a[101],b[101],c[101];
int n,v1,v2,kk;
int main()
{
while(scanf("%d%d%d%d",&n,&v1,&v2,&kk)!=EOF)
{
int i,j,k,ans,l;
for(i=0;i<n;i++)
scanf("%d%d%d",&a[i],&b[i],&c[i]);
memset(f,0,sizeof(f));
for(i=0;i<n;i++)
{
for(j=v1;j>=0;j--)
for(k=v2;k>=0;k--)
for(l=kk;l>=0;l--)
{
ans=0;
if(j>=a[i])
ans=max(f[j-a[i]][k][l]+c[i],ans);
if(k>=b[i])
ans=max(f[j][k-b[i]][l]+c[i],ans);
if(l>=1)
ans=max(f[j][k][l-1]+c[i],ans);
f[j][k][l]=max(f[j][k][l],ans);
}
}
printf("%d\n",f[v1][v2][kk]);
}
return 0;
}
hdu 4501 多维01背包
最新推荐文章于 2022-07-04 14:50:10 发布