首页 > 其他分享 >Bone Collector HDU - 2602【 01 背包 】

Bone Collector HDU - 2602【 01 背包 】

时间:2023-02-14 13:38:02浏览次数:57  
标签:10005 HDU 01 2602 int ll long dp lld

Bone Collector

 HDU - 2602 

&:自己的动态规划好差的,算法也跟不上,真是处处碰壁。于是找点简单的题看看,散散心。

背包是比较典型的题了,看了好一会的背包九讲,对比着来学了学。

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

ll dp[1005][1006]; // 未优化空间的做法

ll w[10005];
ll v[10005];

int main()
{
    ll t,n,m;
    scanf("%lld", &t);
    while(t--)
    {
        scanf("%lld %lld", &n, &m);
        for(int i = 1; i <= n; i ++)scanf("%lld", &w[i]); 
        for(int i = 1; i <= n; i ++)scanf("%lld", &v[i]);

        for(int i = 0; i <= m; i ++) dp[0][i] = 0;  // 初始化

        for(int i = 1; i <= n; i ++)  //n个物品 这里dp[i][j]代表在体积为j的情况下装的i个物品的价值
        {
            for(int j = 0; j <= m; j ++) //背包的大小
            {
                if(j < v[i]) dp[i][j] = dp[i - 1][j]; // 如果体积小于v[i]也就i物品的体积,装不下,就是存前一个答案了

                else dp[i][j] = max(dp[i - 1][j] , dp[i - 1][j - v[i]] + w[i]); //否则,就要比较装与不装第i个物品的情况,取较大的
            }
        }
        printf("%lld\n",dp[n][m]);
    }
    return 0;
}

改成一维的:

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

ll dp[1005];

ll w[10005];
ll v[10005];

int main()
{
    ll t,n,m;
    scanf("%lld", &t);
    while(t--)
    {
        scanf("%lld %lld", &n, &m);
        for(int i = 1; i <= n; i ++)scanf("%lld", &w[i]);
        for(int i = 1; i <= n; i ++)scanf("%lld", &v[i]);

        memset(dp,0, sizeof(dp));

        for(int i = 1; i <= n; i ++)
        {
           for(int j = m; j >= v[i]; j --)
           {
                dp[j] = max(dp[j], dp[j - v[i]] + w[i]);
           }
        }
        printf("%lld\n",dp[m]);
    }
    return 0;
}

 

标签:10005,HDU,01,2602,int,ll,long,dp,lld
From: https://blog.51cto.com/u_15965659/6056702

相关文章

  • L2-017 人以群分 (25 分)
    L2-017 人以群分 (25分)社交网络中我们给每个人定义了一个“活跃度”,现希望根据这个指标把人群分为两大类,即外向型(outgoing,即活跃度高的)和内向型(introverted,即活跃度低......
  • L2-011 玩转二叉树 (25 分)
    L2-011 玩转二叉树 (25分)给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换......
  • PTA 练习 L1-011 A-B (20 分)
    L1-011 A-B (20分)本题要求你计算A−B。不过麻烦的是,A和B都是字符串——即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。输入格式:输入......
  • 畅通工程续(HDU 1874)(简单最短路)
    某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的......
  • Windows 10 Insider Preview Build 20150发布
    你好,WindowsInsider,今天我们将在Dev频道(Fastring)向WindowsInsider发布Windows10InsiderPreviewBuild20150。从这个Build开始,我们返回到从RS_PRERELEASE分支发布构......
  • P4921 [MtOI2018]情侣?给我烧了!
    前言情人节写的这道题,题目名称好符合我当时的心情。题目链接Luogu:P4921解法容斥我们发现最后要求的结果是恰好\(k\)对情侣坐在一起的方案数,我们就不难想到去计算......
  • 【2018.1.14】关于本蒟蒻
    额额额因为实在太弱,以及,也没用能力更新博客。。。所以,就扔着废了好久。。不过考虑到,有些东西过了一段时间以后自己就会忘记,也不希望我的蒟蒻有限的OI生涯什么都没有留下......
  • linux010之网络管理
    简介:在实际工作中,项目上会给你一个linux系统,然后再给你一个局域网地址,让你将linux的网络配置到局域网上,方便后续操作。如果在虚拟机上配置网络?在linux的网络配置文......
  • jwt基础(01)
    jwt基础目录jwt基础1jwt介绍和原理jwt开发重点base64编码和解码bas464应用场景drf-jwt快速使用django+drf平台开发jwt这套东西,有两个模块djangorestframework-jwt–>虽然......
  • 《Terraform 101 从入门到实践》 Terraform在公有云Azure上的应用
    《Terraform101从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。简介Azure是微软的公有云,它......