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;
}



目录
相关文章
|
6月前
|
算法 Windows
class073 背包dp-01背包、有依赖的背包【算法】
class073 背包dp-01背包、有依赖的背包【算法】
57 0
|
4月前
|
算法 搜索推荐 Java
解析01背包问题及其在动态规划中的应用
解析01背包问题及其在动态规划中的应用
|
5月前
|
存储 JavaScript 算法
【背包问题】01背包问题和完全背包问题的模板
【背包问题】01背包问题和完全背包问题的模板
|
6月前
【模板】完全背包和01背包
【模板】完全背包和01背包
37 1
|
人工智能 算法 决策智能
动态规划之背包问题(01背包问题、完全背包问题、方案数填满型背包问题)
动态规划之背包问题(01背包问题、完全背包问题、方案数填满型背包问题)
248 1
|
测试技术 容器
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(三)
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(三)
212 0
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(三)
|
C++
(排列,选择类dp)(数论同余定理,同余运算)(以背包为母题)1214. 波动数列
(排列,选择类dp)(数论同余定理,同余运算)(以背包为母题)1214. 波动数列
97 0
|
JavaScript 测试技术 vr&ar
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(一)
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(一)
149 0
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(一)
|
测试技术
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(二)
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(二)
288 0
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(二)
|
测试技术
01 背包例题(二维数组+滚动数组优化)
01 背包例题(二维数组+滚动数组优化)
118 0
01 背包例题(二维数组+滚动数组优化)