Bone Collector 01背包 HDU

来源:互联网 发布:网络歌曲大全 编辑:程序博客网 时间:2024/04/29 10:18

题意:

给出T组数据,n个石头,给出石头价值和价格。问在最大容量为v的情况下可以收获的价值

思路:

裸01


#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;int dp[1005];int price[1005];int val[1005];int main(){    int t;    scanf("%d",&t);    while(t--)    {        int n,v;        scanf("%d%d",&n,&v);        for(int i=1;i<=n;i++)            scanf("%d",&val[i]);        for(int i=1;i<=n;i++)            scanf("%d",&price[i]);        memset(dp,0,sizeof(dp));        for(int i=1;i<=n;i++)        {            for(int j=v;j>=price[i];j--)            {                dp[j]=max(dp[j],dp[j-price[i]]+val[i]);            }        }        int ans=0;        for(int i=0;i<=v;i++)            ans=max(ans,dp[i]);        printf("%d\n",ans);    }}


0 0
原创粉丝点击