zoukankan      html  css  js  c++  java
  • 牛妹的春游

     分析:

      这是道二维费用的背包问题,可以像01背包一样优化掉第一维的决策,选或不选这个袋子,然后需要像01背包一样倒序循环体积,和01背包的优化一样。

      其次,这道题的难点是可以买多,只要买够就行,我们只需要对负数的体积取0就行,表示我们即使当前需要的饮料小于袋子中的饮料数量,我们依然可以购买,只要从0决策转移过来就行。

    class Solution {
    public:
        int dp[2000][2000];
        int minCost(int a, int b, vector<vector<int> >& p) {
            memset(dp, 0x3f, sizeof dp);
            dp[0][0] = 0;
            for (int i = 0; i < p.size(); ++i)
                for (int j = a; j >= 0; --j)
                    for (int k = b; k >= 0; --k)
                    {
                        dp[j][k] = min(dp[j][k], dp[max(j - p[i][0], 0)][max(k - p[i][1], 0)] + p[i][2]);
                    }
            return dp[a][b];
        }
    };
  • 相关阅读:
    linux
    ansible
    语法糖
    jupyter login
    hadoop patch
    ganglia
    unixbench安装使用
    linux使用FIO测试磁盘的iops
    cpu事实负载使用top命令
    phoronix-test-suite测试云服务器
  • 原文地址:https://www.cnblogs.com/yonezu/p/13409789.html
Copyright © 2011-2022 走看看