题解 | #购物单#

购物单

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

class HJ16:
    def __init__(self):
        self.index = 0
        self.v = [0]
        self.p = 0
        self.q = 0
        self.w = [0]
        self.next = []


T = input().split()
N, m = int(T[0]), int(T[1])
ls_HJ16 = []
for i in range(m + 1):
    ls_HJ16_temp = HJ16()
    ls_HJ16.append(ls_HJ16_temp)
ls_main = []
for i in range(1, m + 1):
    temp = input().split()
    ls_HJ16[i].index = i
    ls_HJ16[i].v[0] = int(temp[0])
    ls_HJ16[i].p = int(temp[1])
    ls_HJ16[i].q = int(temp[2])
    ls_HJ16[i].w[0] = ls_HJ16[i].v[0] * ls_HJ16[i].p
    if ls_HJ16[i].q != 0:
        ls_HJ16[ls_HJ16[i].q].next.append(i)
    else:
        ls_main.append(i)

ii = 1
for i in ls_main:
    ls_HJ16[i].index = ii
    ii += 1
    next0v, next0w, next1v, next1w = 0, 0, 0, 0
    if len(ls_HJ16[i].next) != 0:
        next0v = ls_HJ16[ls_HJ16[i].next[0]].v[0]
        next0w = ls_HJ16[ls_HJ16[i].next[0]].w[0]
        ls_HJ16[i].v.append(ls_HJ16[i].v[0] + next0v)
        ls_HJ16[i].w.append(ls_HJ16[i].w[0] + next0w)
    if len(ls_HJ16[i].next) == 2:
        next1v = ls_HJ16[ls_HJ16[i].next[1]].v[0]
        next1w = ls_HJ16[ls_HJ16[i].next[1]].w[0]
        ls_HJ16[i].v.append(ls_HJ16[i].v[0] + next1v)
        ls_HJ16[i].w.append(ls_HJ16[i].w[0] + next1w)
        ls_HJ16[i].v.append(ls_HJ16[i].v[0] + next0v + next1v)
        ls_HJ16[i].w.append(ls_HJ16[i].w[0] + next0w + next1w)

dp = [[0] * (N // 10 + 1) for _ in range(len(ls_main) + 1)]
# dp=[[0]*(N+1)]*(len(ls_main)+1)
for i in [0] + ls_main:
    for j in range(N // 10 + 1):
        max_dp = dp[ls_HJ16[i].index - 1][j]
        for k in range(len(ls_HJ16[i].v)):
            if j >= ls_HJ16[i].v[k] // 10:
                max_dp = max(
                    max_dp,
                    dp[ls_HJ16[i].index - 1][j - ls_HJ16[i].v[k] // 10]
                    + ls_HJ16[i].w[k],
                )
        dp[ls_HJ16[i].index][j] = max_dp
print(dp[len(ls_main)][N // 10])

全部评论

相关推荐

08-06 16:46
门头沟学院 Java
这是正常招聘吗?🙄测评颠得要死 真填不下去
鲁大牛:真是个纸张公司。我综测瞎写的还是进笔试了,笔试大部分都空着还是进面试了。一面一口气问了我15道八股文我都答对了,算法也A出来了。结果一面挂了
投递多益网络等公司10个岗位
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发
点赞 评论 收藏
分享
约会议室面试被+1发现了
积极的悲伤蛙愿off...:这怎么了,我都直接跟带教说投了哪些公司让他帮我看看简历,本来就是阶段性的实习生,别真把自己当正式工了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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