zoukankan      html  css  js  c++  java
  • DP入门——01背包 & 完全背包

    01背包:

    采药:

    https://www.luogu.org/problemnew/show/P1048

    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    int dp[1005];
    int weight[105],value[105];
    
    int main() {
        int T, n;
        cin >> T >> n;
        for (int i = 0; i < n; i++) {
            cin >> weight[i] >> value[i];
        }
        for (int i = weight[0]; i <= T; i++) {
            dp[i] = value[0];
        }
        for (int i = 1; i < n; i++) {
            for (int j = T; j >= weight[i]; j--) {
                dp[j] = max(dp[j - weight[i]] + value[i], dp[j]);
            }
        }
        cout << dp[T] << endl;
        return 0;
    }
    View Code

    完全背包

    疯狂采药:

    https://www.luogu.org/problemnew/show/P1616

    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    int dp[100005];
    int weight[10005],value[10005];
    
    int main() {
        int T, n;
        cin >> T >> n;
        for (int i = 0; i < n; i++) {
            cin >> weight[i] >> value[i];
        }
        for (int i = weight[0]; i <= T; i++) {
            dp[i] = value[0] * (i / weight[0]);
        }
        for (int i = 1; i < n; i++) {
            for (int j = weight[i]; j <= T; j++) {
                dp[j] = max(dp[j - weight[i]] + value[i], dp[j]);
            }
        }
        cout << dp[T] << endl;
        return 0;
    }
    View Code

    区别在于,完全背包的初始化值,以及完全背包,每个东西可以用无限次,第二重循环是从前往后。

  • 相关阅读:
    ubuntu下安装常用软件合集
    Ubuntu16升级到18
    VScode安装教程
    查看系统信息脚本
    Excel应用笔记
    后缀数组
    笔记-AHOI2013 差异
    二分图
    动态规划dp
    笔记-CF1354E Graph Coloring
  • 原文地址:https://www.cnblogs.com/czc1999/p/10373109.html
Copyright © 2011-2022 走看看