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];
        }
    };
  • 相关阅读:
    1026 Table Tennis (30)
    1029 Median
    1025 PAT Ranking (25)
    1017 Queueing at Bank (25)
    1014 Waiting in Line (30)
    1057 Stack (30)
    1010 Radix (25)
    1008 Elevator (20)
    字母大小写转换
    Nmap的基础知识
  • 原文地址:https://www.cnblogs.com/yonezu/p/13409789.html
Copyright © 2011-2022 走看看