题解 | #购物单#

购物单

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

N, m = map (int, input().split())
main, aux = {}, {}
N = int(N/ 10)
for i in range(1, m + 1):
    v, p, q = map(int, input().split())
    v = int(v/10)
    if q == 0:
        main[(i, 0)] = (v, p*v)
    else:
        if (q, 0) not in aux:
            aux[(q, 0)] = (v, p*v)
        else:
            aux[(q, 1)] = (v, p*v)
for i in range(1, m + 1):
    if (i, 0) in aux:
        if (i, 0) in aux:
            if (i, 1) in aux:
                main[(i, 1)] = (main[(i, 0)][0] + aux[(i, 0)][0], main[(i, 0)][1] + aux[(i, 0)][1])
                main[(i, 2)] = (main[(i, 0)][0] + aux[(i, 1)][0], main[(i, 0)][1] + aux[(i, 1)][1])
                main[(i, 3)] = (main[(i, 0)][0] + aux[(i, 0)][0] + aux[(i, 1)][0], main[(i, 0)][1] + aux[(i, 0)][1] + aux[(i, 1)][1])
            else:
                main[(i, 1)] = (main[(i, 0)][0] + aux[(i, 0)][0], main[(i, 0)][1] + aux[(i, 0)][1])
dp = [[0] * (N + 1) for _ in range(m+2)]
for i in range(1, m + 1):
    dp[i][0] = 0
    for j in range(1, N + 1):
        if (i,3) in main:
            temp = 0
            dpmax = 0
            for k in range(4):
                if j >= main[(i, k)][0]:
                    temp = max(dp[i-1][j], dp[i-1][j-main[(i, k)][0]] + main[(i, k)][1])
                else:
                    temp = dp[i-1][j]
                dpmax = max(dpmax, temp)
            dp[i][j] = dpmax
        elif (i,1) in main:
            temp = 0
            dpmax = 0
            for k in range(2):
                if j >= main[(i, k)][0]:
                    temp = max(dp[i-1][j], dp[i-1][j-main[(i, k)][0]] + main[(i, k)][1])
                else:
                    temp = dp[i-1][j]
                dpmax = max(dpmax, temp)
            dp[i][j] = dpmax
        elif (i,0) in main:
            if j >= main[(i, 0)][0]:
                dp[i][j] = max(dp[i-1][j], dp[i-1][j-main[(i, 0)][0]] + main[(i, 0)][1])
            else:
                dp[i][j] = dp[i-1][j]
        else:
            dp[i][j] = dp[i-1][j]
        # print(i,j, dp[i][j])
print(dp[m][N] * 10)

全部评论

相关推荐

05-12 18:24
长安大学 UE4
因为是家里第一代大学生,报专业报学校都没人可以指导,只能自己看着来毕业找工作,父母只知道考公务员啊考教师啊,丝毫不考虑难度我说要去大城市打工才行,小县城对学历没有需求,开的工资都很低,两三千养活不了的结果都不同意我去大城市,觉得北上广深远,不稳定,一年到头不着家,养这么大孩子算白养了要我怎么办,不考公不考编就是死路一条呗,出去打工就是不孝呗可是考公考编也好难,考上也是小职员,到时候又变成了家里第一代体制内了,不还是样样靠自己有时候很羡慕同学,要去大城市打拼,家里都很支持去看看外面的世界也羡慕同学父母都是体制内的,考上还有所依靠家里没有办法给予帮助,简直是进入死胡同一样
Two_Shadow:你先拿到offer,路是自己走的,你真去了谁拦得住你呢,不用给自己扣帽子,我也是我家第一代大学生啊,农村人,高考96个志愿我就填50多个计算机,爸妈让我填满保底我说我不,我就学计算机,上大学了让我考研我说我不考,我就喜欢干活,现在签了offer,他们也释怀,不回家就努力提升自己,就往家里打钱,就开视频,还能怎么样呢,路是自己走的,他们只是希望你能走得好一点,但大部分父母,尤其是农村父母根本帮不了你什么,难道你就不走路了吗,希望能骂醒你,不要想太多做太少。
点赞 评论 收藏
分享
qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务