HDU 2602

来源:互联网 发布:python 发送get请求 编辑:程序博客网 时间:2024/05/17 04:57

  完全的01背包。。

  题意:有N个物品  大小为V的背包

     然后每个物品的价值Vi 大小pi  ;

求 能拿走的最大的价值。。。



  状态转移方程  f[v]=max(f[v],f[v-z[i]]+v[i]);

贴上代码=。=

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;long long val[1005],zl[1005];long long f[1005];int main(){    int t;    scanf("%d",&t);    while(t--)    {   memset(f,0,sizeof(f));        int n,v;        scanf("%d%d",&n,&v);        for(int i=0;i<n;i++)            scanf("%I64d",&val[i]);        for(int i=0;i<n;i++)            scanf("%I64d",&zl[i]);        for(int i=0;i<n;i++)            for(int u=v;u>=0;u--)            {   if(u>=zl[i])                f[u]=max(f[u],f[u-zl[i]]+val[i]);            }        printf("%I64d\n",f[v]);        }}


0 0
原创粉丝点击