hdu 4501 多维背包模版

来源:互联网 发布:c语言温度换算 编辑:程序博客网 时间:2024/05/16 11:14
#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int mm=110;int dp[mm][mm][11];class node{  public:int a,b,c;}f[mm];int n,v1,v2,kk;void Max(int &x,const int y){  if(x<y)x=y;}int main(){  while(scanf("%d%d%d%d",&n,&v1,&v2,&kk)!=EOF)  {    for(int i=0;i<n;++i)      scanf("%d%d%d",&f[i].a,&f[i].b,&f[i].c);    memset(dp,0,sizeof(dp));    int z,ans=0,tmp;    for(int i=0;i<n;i++)    {       for(int j=v1;j>=0;--j)        for(int k=v2;k>=0;--k)        for(int l=kk;l>=0;--l)        { tmp=0;          if(j-f[i].a>=0)            Max(tmp,dp[j-f[i].a][k][l]+f[i].c);          if(k-f[i].b>=0)            Max(tmp,dp[j][k-f[i].b][l]+f[i].c);          if(l-1>=0)            Max(tmp,dp[j][k][l-1]+f[i].c);          Max(dp[j][k][l],tmp);        }    }    printf("%d\n",dp[v1][v2][kk]);  }}

原创粉丝点击