P1048 采药

医师把辰辰带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,
每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”

1. 动态规划(0-1背包)

每个药草是唯一的,它具有耗费时间(容量)的代价,以及价值属性,给定总时间(容量),该问题是0-1背包问题

int maxval(int V,vector<int>&w,vector<int>&c){
    int n = w.size();
    vector<int> dp(V+1);
    int res = 0;
    for(int i=0;i<n;i++)
        for(int j=V;j>=c[i];j--){
            dp[j] = max(dp[j],dp[j-c[i]]+w[i]);
            res = max(res,dp[j]);
        }
    return res;
}
posted @ 2023-08-22 15:14  失控D大白兔  阅读(6)  评论(0编辑  收藏  举报