题解 | #称砝码#

称砝码

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

n = int(input())
m = list(map(int,input().split()))
x = list(map(int,input().split()))

weight = {0}

for i in range(n):
    for j in range(x[i]):
        temp_weight = {w + m[i] for w in weight}
        weight = weight | temp_weight

print(len(weight))

这个问题的关键在于每次添加一次砝码都需要更新整个weight。这里利用更新前后的并集生成最后的集合。例如增加一个重量为1的砝码是{0}和{1}的并集,更新后为{0,1}。再次增加一个重量为1的砝码则是{0,1}和{1,2}的并集,即{0,1,2},如此更新。

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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