• hdu 2062


    Bone Collector

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 13436    Accepted Submission(s): 5273


    Problem Description
    Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave …
    The bone collector had a big bag with a volume of V ,and along his trip of collecting there are a lot of bones , obviously , different bone has different value and different volume, now given the each bone’s value along his trip , can you calculate out the maximum of the total value the bone collector can get ?
     
    Input
    The first line contain a integer T , the number of cases.
    Followed by T cases , each case three lines , the first line contain two integer N , V, (N <= 1000 , V <= 1000 )representing the number of bones and the volume of his bag. And the second line contain N integers representing the value of each bone. The third line contain N integers representing the volume of each bone.
     
    Output
    One integer per line representing the maximum of the total value (this number will be less than 231).
     
    Sample Input
    1 5 10 1 2 3 4 5 5 4 3 2 1
     
    Sample Output
    14
     #include<iostream>
    using namespace std;
    #define max(a,b) a>b?a:b
    int a[1010],b[1010],c[1010][1010];
    int
    main()
    {

        int
    i,j,l,m,n;
        while
    (cin>>m)
        {

            while
    (m--)
            {

                cin>>n>>l;
                memset(a,0,sizeof(a));
                memset(b,0,sizeof(b));
                memset(c,0,sizeof(c));
                for
    (i=1;i<=n;i++)
                    cin>>a[i];
                for
    (i=1;i<=n;i++)
                    cin>>b[i];
                for
    (i=1;i<=n;i++)
                {

                    for
    (j=0;j<=l;j++)
                    {

                        if
    (j>=b[i])
                            c[i][j]=max(c[i-1][j],c[i-1][j-b[i]]+a[i]);
                        else

                            c[i][j]=c[i-1][j];
                    }
                }

                cout<<c[n][l]<<endl;
            }
        }

        return
    0;
    }
  • 相关阅读:
    for 循环/ while 循环/ do-while 循环
    让元素脱离动画流
    缓存布局信息
    一个程序员的管理心得
    CenOS下Tomcat外网不能访问
    卸载CentOS自带的JDK并配置指定JDK环境变量
    Linux系统安装Mysql
    系统的非功能性需求
    做软件的追求
    路途小歇
  • 原文地址:https://www.cnblogs.com/hduacm/p/2623384.html
Copyright © 2020-2023  润新知