练习3-Q

原创 2016年05月31日 11:01:54

题目:Problem Q

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 …<br>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 ?<br><center><img src=../../../data/images/C154-1003-1.jpg> </center><br>

Input
The first line contain a integer T , the number of cases.<br>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 2<sup>31</sup>).

Sample Input
1 5 10 1 2 3 4 5 5 4 3 2 1

Sample Output
14

题意:

01背包问题,往体积为V的背包里放体积和价值不同的东西,求背包被放满时的最大价值;

思路:

只考虑第i件物品放或不放,如果第i件物品可以放得开,则其动态转移方程为
dp[i][j] = max(dp[i-1][j], dp[i-1][j-vo[i]]+va[i]);
其中i表示第i件物品,j表示放入第i件物品后的体积。

代码:

# include <iostream>
# include <string.h>
# include <algorithm>

using namespace std;

int dp[1001][1001];



int main()
{
    int va[1001], vo[1001];
    int T;
    cin >> T;
    while(T--)
    {
        memset(va,0,sizeof(va));
        memset(vo,0,sizeof(vo));
        memset(dp,0,sizeof(dp));
        int N, V;
        cin >> N >> V;
        for(int i = 1;i <= N; i++)
            cin >> va[i];
        for(int i = 1;i <= N; i++)
            cin >> vo[i];


        for(int i = 1;i <= N; i++)
        {
            for(int j = 0;j <= V; j++)
            {
                if(vo[i] <= j)
                    dp[i][j] = max(dp[i-1][j], dp[i-1][j-vo[i]]+va[i]);
                else
                    dp[i][j] =dp[i-1][j];
            }
        }

        /*for(int i = 1;i <= N; i++)
        {
            for(int j = 0;j <= V; j++)
                cout << dp[i][j] << " ";
            cout << endl;
        }*/
            cout << dp[N][V]<<endl;
    }

    return 0;
}


Show me the code之Python练习册 Q1~3 优惠券

""" 问题:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果 常用库:图像处理的库:PIL 安装pillow库: ...

VisionMobile:2013年Q3移动开发者经济报告(十一):第十章、HTML5应用开发的万花筒

第十章、HTML5应用开发的万花筒 HTML5是与应用经济双寡头相竞争的技术。根据我们Q3对6000+名移动应用开发者的研究,就移动开发者青睐度而言,52%的开发者以某种形式使用HTML5,排在iOS...

VisionMobile:2013年Q3移动开发者经济报告(一):关键内容

VisionMobile在7月份推出了2013年Q3的移动开发者经济报告。 开发者经济报告2013年第3季度 研究系列第5季 跟踪移动开发者经济 跟踪移动生态系统、开发者青睐度、货币化方向、收入模式和...

搜狗Q3营收同比增102% 王小川称获益于搜索大战

昨日,中文输入平台搜狗公司发布了2012年第三季度财报。该季度搜狗实现营收3700万美元,同比大涨102%、季度环比增长23%;预计第四季度营收突破4000万美元,继续增长态势。自2010年8月分拆以...
  • cometwo
  • cometwo
  • 2012年11月07日 12:55
  • 2203

《百度移动互联网发展趋势报告2011 年Q3》概要

在最新发布的《百度移动互联网发展趋势报告2011 年 Q3》中,百度无线和易观国际依托百度移动搜索数据,结合易观智库的应用数据补充,从用户分布及网络接入、移动终端竞争格局及趋势、移动终端平台变化趋势、...

VisionMobile:2014年Q3移动开发者经济报告(八):7、应用开发者工具的交易

文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处http://blog.csdn.net/flowingflying以及译者@恺风Wei 2014年7月,vi...

VisionMobile:2014年Q3移动开发者经济报告(六):5、下一个淘金点:企业应用

文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处http://blog.csdn.net/flowingflying以及译者@恺风Wei-傻瓜与非傻瓜 201...

VisionMobile:2014年Q3移动开发者经济报告(五):4、正在消失的应用开发者中产阶级

文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处http://blog.csdn.net/flowingflying以及译者@恺风Wei-傻瓜与非傻瓜 201...

Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)

〇、引入前续: Q132:PBRT-V3,BSSRDF(双向散射表面反射分布函数)(5.6.2章节、11.4章节) Q133:PBRT-V3,BSSRDF的采样(15.4章节)在Q132、Q...

【译】VisionMobile:开发者经济报告2015 Q3(一):全球开发者图景

文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处http://blog.csdn.net/flowingflying以及译者@恺风Wei VisionMobile在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:练习3-Q
举报原因:
原因补充:

(最多只允许输入30个字)