题解 | #购物单#

购物单

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

import sys
from collections import defaultdict

def run(n, ks):
    result = 0
    m = len(ks)
    d0 = [0]*(n//10+1)
    d1 = [0]*(n//10+1)
    vs = []
    for k,v in ks.items():
        _vs = [[v["a"][0]//10, v["a"][2]]]
        for i,v2 in enumerate(v["b"]):
            _vs.append([(v["a"][0]+v2[0])//10, v["a"][2]+v2[2]])
            if len(v["b"])-1 > i:
                for v3 in v["b"][i+1:]:
                    _vs.append([(v["a"][0]+v2[0]+v3[0])//10, v["a"][2]+v2[2]+v3[2]])
        vs.append(_vs)
    for i in range(1, m+1):
        d0=d1
        d1=[0]*(n//10+1)
        for j in range(1, n//10+1):
            d1[j] = d0[j]
            tmp  = [k for k in vs[i-1] if j-k[0]>=0]
            if len(tmp) > 0:
                tmp = max([d0[j-k[0]]+k[1] for k in tmp])
                d1[j] = max(d0[j], tmp)
    result = d1[n//10]
    return result

N, m = input().strip().split()
N, m = int(N), int(m)

ks = defaultdict(lambda: {"a":[],"b":[]})
for i in range(1,m+1):
    k = input().strip()
    k = list(map(int, k.split()))
    if k[2] > 0:
        ks[k[2]]["b"].append([k[0],k[1],k[0]*k[1]])
    else:
        ks[i]["a"] = [k[0],k[1], k[0]*k[1]]
result = run(N,ks)
print(result)

全部评论

相关推荐

2024-12-27 23:45
已编辑
三江学院 Java
程序员牛肉:死局。学历+无实习+项目比较简单一点。基本就代表失业了。 尤其是项目,功能点实在是太假了。而且提问点也很少。第一个项目中的使用jwt和threadlocal也可以作为亮点写出来嘛?第二个项目中的“后端使用restful风格”,“前端采用vue.JS”,“使用redis”也可以作为亮点嘛? 项目实在是太简单了,基本就是1+1=2的水平。而你目标投递的肯定也是小厂,可小厂哪里有什么培养制度,由于成本的问题,人家更希望你来能直接干活,所以你投小厂也很难投。基本就是死局,也不一定非要走后端这条路。可以再学一学后端之后走测试或者前端。 除此之外,不要相信任何付费改简历的。你这份简历没有改的必要了,先沉淀沉淀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务