题解 | #购物单#

购物单

https://www.nowcoder.com/practice/f9c6f980eeec43ef85be20755ddbeaf4

#include<iostream>
#include<math.h>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;

int main(){
    int N,m;
    cin >> N >> m;
    N/=10;
    vector<int> V,P,Q;
    map<int,vector<int>> dict;
    int v,p,q;
    for(int i=0;i<m;i++){
        cin >> v >> p >> q;
        v/=10;
        V.push_back(v);
        P.push_back(p);
        Q.push_back(q);
        dict[q].push_back(i);
     }
    int id_1,id_2;
    int len=dict[0].size();
    vector<vector<pair<int,int>>>rec(len);
    for(int i=0;i<len;i++){
        int x=dict[0][i];
        rec[i].push_back(make_pair(V[x],V[x]*P[x]));
        if(dict[x+1].size()==2){
            id_1=dict[x+1][0];
            id_2=dict[x+1][1];
            rec[i].push_back(make_pair(V[id_1]+V[x],P[id_1]*V[id_1]+P[x]*V[x]));
            rec[i].push_back(make_pair(V[id_2]+V[x],P[id_2]*V[id_2]+P[x]*V[x]));
            rec[i].push_back(make_pair(V[id_1]+V[id_2]+V[x],P[id_1]*V[id_1]+P[id_2]*V[id_2]+P[x]*V[x]));   
        }
        else if(dict[x+1].size()==1) {
            id_1=dict[x+1][0];
            rec[i].push_back(make_pair(V[id_1]+V[x],P[id_1]*V[id_1]+P[x]*V[x]));
        }
    }
    
    vector<vector<int>> dp(len+1,vector<int>(N+1,0));
    for(int i=1;i<=len;i++){
        for(int j=1;j<=N;j++){
            int cur=0;
            for(int k=0;k<rec[i-1].size();k++){
                int price=rec[i-1][k].first;
                int good=rec[i-1][k].second;
                if(j-price>=0){
                    cur=max(cur,dp[i-1][j-price]+good);
                }
            }    
            dp[i][j]=max(dp[i-1][j],cur);   
        }
    }
    cout<<dp[len][N]*10;
    
}

将有依赖关系的背包问题化解为分组背包问题即可
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 14:11
很喜欢小米的新车,校招薪资每月22k,攒多久能买?
测试糕手手:别看工资,先看现金流存款。有50W存款以上再考虑,车是消耗品,选适合自己的重要。你有钱就当我没说过
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
昨天 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 12:11
我最近都有点不想活了,天天早10晚11的,还问我爱不爱她目前的状态别说爱谁了,没扇谁就不错了。是不是大家都是一进节子,只有工作没有爱情了
AzureSkies:在字节的时候找的就是字节的,飞书太适合恋爱人士了,能看到是不是已读,是不是在会议中。简直冥婚好伴侣
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务