于妍蓝桥杯训练第27day

于妍 2022-02-28 23:06:20

 

 

n,m = map(int,input().split())
N=12010
M=2010
v=[0 for i in range(N)]
w=[0 for i in range(N)]
dp=[0 for i in range(M)]
cnt=0 # 分组的组别
for i in range(1,n+1):
    a,b,s=map(int,input().split())
    k=1  # 组别里的个数
    while k<=s:
        cnt+=1 #组别先增加
        v[cnt]=a*k # 整体体积
        w[cnt]=b*k # 整体价值
        s-=k
        k*=2  # 组别的个数需要增加
    if s>0:
        cnt+=1
        v[cnt]=a*s
        w[cnt]=b*s
        
n=cnt   # 枚举次数正式由个数变成组别数
#01背包一维优化
for i in range(1,n+1):
    for j in range(m,0,-1):
        if j>=v[i]:
            dp[j]=max(dp[j],dp[j-v[i]]+w[i])
print(dp[m])
        

 

...全文
77 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

30,419

社区成员

发帖
与我相关
我的任务
社区描述
打造最热爱学习的高校社区,帮助大家提升计算机领域知识,带大家打比赛拿奖,提高自我,希望大家共同创造良好的社区氛围。
社区管理员
  • 川川菜鸟
  • 亡心灵
  • 星辰菜鸟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

监督大家学习,每日学习打卡,以投稿形式打卡。扫码关注公众号,可加入粉丝群和领取大量资源。

试试用AI创作助手写篇文章吧