01背包补题(一)(中)

简介: 01背包补题(一)

P1164 小A点菜

本题链接P1164 小A点菜

本博客给出本题截图

58.png


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

P1510 精卫填海

本题链接P1510 精卫填海

本博客给出本题截图

59.png

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

P2639 [USACO09OCT]Bessie’s Weight Problem G

本题链接P2639 [USACO09OCT]Bessie’s Weight Problem G

本博客给出本题截图

60.png

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 45010;
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 << f[m] << endl;
    return 0;
}

P2925 [USACO08DEC]Hay For Sale S

本题链接P2925 [USACO08DEC]Hay For Sale S

本博客给出本题截图

61.png

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 50010;
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 << f[m] << endl;
    return 0;
}


目录
相关文章
|
9月前
|
算法 容器
01背包问题
01背包问题
76 1
hdoj 2191 背包
虽然每件物品的数目并不是1,可能有多个,但我们完全可以把这个题目转化成01背包来解决。 可以把多件相同的物品合并成一件,马上就变01背包了。
42 0
|
测试技术 容器
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(三)
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(三)
249 0
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(三)
|
测试技术
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(二)
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(二)
314 0
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(二)
|
JavaScript 测试技术 vr&ar
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(一)
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(一)
175 0
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(一)
01背包补题(一)(上)
01背包补题(一)
150 0
01背包补题(一)(上)
01背包补题(一)(下)
01背包补题(一)
119 0
01背包补题(一)(下)
|
算法
01背包原理
笔记
123 0
|
机器学习/深度学习