01背包补题(一)(上)

简介: 01背包补题(一)

前言

动态规划——01背包的一些习题,包含如下题目:

⭐️ P1048 采药

⭐️ P2871 [USACO07DEC]Charm Bracelet S

⭐️ P1049 装箱问题

⭐️ P1060 开心的金明

⭐️ P1164 小A点菜

⭐️ P1510 精卫填海

⭐️ P2639 [USACO09OCT]Bessie’s Weight Problem G

⭐️ P2925 [USACO08DEC]Hay For Sale S

⭐️ P1926 小书童——刷题大军

⭐️ P1802 5倍经验日

⭐️ P1734 最大约数和

⭐️ P2392 kkksc03考前临时抱佛脚


刷题记录,不提供代码解释,01背包的讲解博客见:01背包问题及二维费用背包问题

P1048 [NOIP2005 普及组] 采药

本题链接P1048 [NOIP2005 普及组] 采药

本博客给出本题截图

54.png


#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int f[N];
int main()
{
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= m; i ++ )
    {
        int v, w;
        cin >> v >> w;
        for (int j = n; j >= v; j -- )
            f[j] = max(f[j], f[j - v] + w);
    }
    cout << f[n] << endl;
    return 0;
}

P2871 [USACO07DEC]Charm Bracelet S

本题链接P2871 [USACO07DEC]Charm Bracelet S

本博客给出本题截图

55.png

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 12890;
int f[N];
int main()
{
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i ++ )
    {
        int v, w;
        cin >> v >> w;
        for (int j = m; j >= v; j -- )
            f[j] = max(f[j], f[j - v] + w);
    }
    cout << f[m] << endl;
    return 0;
}

P1049 [NOIP2001 普及组] 装箱问题

本题链接P1049 [NOIP2001 普及组] 装箱问题

本博客给出本题截图

56.png

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 20010;
int f[N];
int main()
{
    int m, n;
    cin >> m >> n;
    for (int i = 1; i <= n; i ++ )
    {
        int v;
        cin >> v;
        for (int j = m; j >= v; j -- )
            f[j] = max(f[j], f[j - v] + v);
    }
    cout << m - f[m] << endl;
    return 0;
}

P1060 [NOIP2006 普及组] 开心的金明

本题链接P1060 [NOIP2006 普及组] 开心的金明

本博客给出本题截图

57.png

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 30010;
int f[N];
int main()
{
    int n, m;
    cin >> m >> n;
    for (int i = 1; i <= n; i ++ )
    {
        int v, p;
        cin >> v >> p;
        int w = v * p;
        for (int j = m; j >= v; j -- )
            f[j] = max(f[j], f[j - v] + w);
    }
    cout << f[m] << endl;
    return 0;
}



目录
相关文章
|
Android开发
APP脱壳之-定义属于自己的专属应用
APP脱壳之-定义属于自己的专属应用
|
数据采集 传感器 大数据
利用大数据进行精准农业:技术与挑战
【6月更文挑战第6天】大数据技术正变革农业,推动精准农业发展。通过实时收集农田数据(如土壤条件、作物生长情况),运用数据分析预测病虫害,优化生产管理。示例代码显示了如何使用Python进行产量预测。然而,数据质量、整合、农民技术接受度及隐私安全等问题挑战重重。需强化数据管理,统一标准,提升农民数字素养,并保障数据安全。随着技术进步,大数据在精准农业的应用将更加广泛,助力农业高效可持续发展。
416 0
|
存储 NoSQL 物联网
【MongoDB 专栏】MongoDB 在物联网(IoT)领域的应用
【5月更文挑战第11天】MongoDB,一种灵活可扩展的非关系型数据库,在物联网(IoT)领域中大放异彩。应对海量设备产生的多样化数据,MongoDB的文档型数据结构适应性强,适合存储设备信息及传感器读数。其实时更新、强大查询语言、索引机制和扩展性(通过分片技术)满足物联网的高实时性、复杂查询和数据增长需求。尽管面临数据安全和管理挑战,MongoDB已广泛应用于智能家居、工业 IoT 和智能交通等领域,并有望随着物联网技术进步和与其他领域的融合,如人工智能、大数据,持续发展。未来,优化数据质量、提升并发处理能力将是关键,MongoDB将在物联网的智能未来中扮演重要角色。
1040 2
【MongoDB 专栏】MongoDB 在物联网(IoT)领域的应用
|
数据采集 机器学习/深度学习 人工智能
AI在医疗诊断中的应用与挑战
随着人工智能(AI)技术的飞速发展,其在医疗领域的应用也日益广泛。从辅助医生进行疾病诊断到提供个性化治疗方案,AI技术正在改变着传统医疗模式。然而,AI在医疗诊断中的应用并非一帆风顺,面临着数据质量、模型可解释性、法规政策等一系列挑战。本文将从AI在医疗诊断中的具体应用场景出发,探讨其面临的主要挑战及未来发展趋势。
360 13
|
前端开发 开发者 UED
Flutter的自定义Painter:深入探索自定义绘制Widget的技术实现
【4月更文挑战第26天】Flutter的自定义Painter允许开发者根据需求绘制独特UI,通过继承`CustomPaint`类和重写`paint`方法实现。在`paint`中使用`Canvas`绘制图形、路径等。创建自定义Painter类后,将其作为`CustomPaint` Widget的`painter`属性使用。此技术可实现自定义形状、渐变、动画等复杂效果,提升应用视觉体验。随着Flutter的进化,自定义Painter将提供更丰富的功能。
|
数据采集 机器学习/深度学习 人工智能
云服务器可以用来做什么?云服务器使用场景列举
阿里云服务器经常推出一些拼团或者秒杀活动,很多同学看价格不错就抢了。可是云服务器买到手却不知道做什么,新手站长网列举云服务器常见的使用场景,方便大家参考,别再让你的云服务器吃灰了
2302 1
详细解读CList使用方法
详细解读CList使用方法
328 3
|
存储 区块链 数据安全/隐私保护
web3.0学习路径
Web3是指下一代互联网的演进形式,它涉及一系列技术和理念,旨在实现去中心化、开放、透明和用户主导的互联网体验。Web3的目标是赋予用户更多的控制权和数据所有权,并通过区块链、加密货币和分布式技术来实现。
357 2
|
存储 应用服务中间件 nginx
双非本24秋招之路,从考研跑路到大厂上岗(无实习、项目)
双非本24秋招之路,从考研跑路到大厂上岗(无实习、项目)