题解 | #购物单#

购物单

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

All, num = map(int, input().split())

pri, attach ={}, {}

#  现在要计算主件和附件,并纳入字典中,这部分是input的

for i in range(1, num+1):
    
    [v, p, q] = map(int, input().split())

    if q == 0:    # 只有主件
       pri[i] = [v, p]
    else:
       if q in attach:
          attach[q].append([v, p])   #存在2个附件

       else:
          attach[q] = [[v, p]]    #存在1个附件

#  之后开始计算w[i][k]和v[i][k], i代表物品的编号,k代表附件的情况,分为四种;0,1,2,12

# 
w = [[]]
v = [[]]

for key in pri:
    w_temp = []
    v_temp = []
    w_temp.append(pri[key][0])    # 第1种情况,只有主件
    v_temp.append(pri[key][0]*pri[key][1])
    if key in attach:  
        w_temp.append(w_temp[0]+attach[key][0][0])
        v_temp.append(v_temp[0]+attach[key][0][0]*attach[key][0][1])   # 第2种,主件+附件1
        if len(attach[key]) > 1:
          w_temp.append(w_temp[0]+attach[key][1][0])
          v_temp.append(v_temp[0]+attach[key][1][0]*attach[key][1][1])   # 第3种,主件+附件2
          w_temp.append(w_temp[0]+attach[key][1][0]+attach[key][0][0])
          v_temp.append(v_temp[0]+attach[key][1][0]*attach[key][1][1]+attach[key][0][0]*attach[key][0][1])   # 第4种,主件+附件1+附件2
    w.append(w_temp)
    v.append(v_temp)

#  最后一步就是带入背包的公示了
#  行,代表物品的编号,即这里主件的个数编号
#  列,代表总的容量,即这里的总价格,All
#  标准的公式为m行 n列

n = All
m = len(pri)

dp = [[0]*(n+1) for _ in range(m+1)]

for i in range(1, m+1):
    for j in range(10, n+1, 10):

        max1 =  dp[i-1][j]

        for k in range(len(w[i])):
                 
            if j-w[i][k] >= 0:
                max1 = max(max1, dp[i-1][j-w[i][k]]+v[i][k])
            
        dp[i][j] = max1

print(dp[m][n])















全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 12:23
转人工😡
门口唉提是地铁杀:五次握手了
点赞 评论 收藏
分享
昨天 13:16
湖南工学院 Java
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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