题解 | #购物单#

购物单

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

N,n=list(map(int,input().split()))
N=int(N/10)
V=[[0]*6 for _ in range(n)]
for i in range(n):
    v,p,q=list(map(int,input().split())) 
    v=int(v/10)
    if q==0:
        V[i][0],V[i][1]= v,v*p
    else:
        j=1
        if V[q-1][2]!=0:
            j=2
        V[q-1][2*j],V[q-1][2*j+1],V[i][0],V[i][1]=v,v*p,0,0
dp=[[0]*int(N+1) for _ in range(n+1)]
for i in range(1,n+1):  
    for j in range(N+1):
        dp[i][j]=dp[i-1][j]
        if j-V[i-1][0]>=0:
            dp[i][j]=max(dp[i][j],dp[i-1][j-V[i-1][0]]+V[i-1][1])
        if j-V[i-1][0]-V[i-1][2]>=0:
            dp[i][j]=max(dp[i][j],dp[i-1][j-V[i-1][0]-V[i-1][2]]+V[i-1][1]+V[i-1][3])
        if j-V[i-1][0]-V[i-1][4]>=0:  
            dp[i][j]=max(dp[i][j],dp[i-1][j-V[i-1][0]-V[i-1][4]]+V[i-1][1]+V[i-1][5])
        if j-V[i-1][0]-V[i-1][2]-V[i-1][4]>=0:
            dp[i][j]=max(dp[i][j],dp[i-1][j-V[i-1][0]-V[i-1][2]-V[i-1][4]]+V[i-1][1]+V[i-1][3]+V[i-1][5])
print(dp[n][N]*10)

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务