UVa 1149背包问题

wuchangjian2021-11-04 02:27:20编程学习

ij分别是一个序列的最大最小值
难点在于理解取最大最小配对并不会增加背包
因为每个相对最大值总有比最小值更大的数配对,而这更大的数总有比最大值更小的数配对。

import random

#data
N = 1e5
M = random.randint(1,100)
all_w = [random.randint(1,100) for i in range(int(N))]
# code
all_w.sort(reverse=True)

 
bag = 0
i = 0
j = len(all_w)-1
while(i<=j):

    bag += 1
    if i==j:
        break
    if  all_w[i] + all_w[j]<=M:
        if j>0:j-=1
    if i<len(all_w)-1:
        i += 1
print(bag)

相关文章

强省会·向未来 狠抓落实看天心丨天心区存量土地指挥部

强省会·向未来 狠抓落实看天心丨天心区存量土地指挥部

2022-08-09 12:07:46 今年以来,天心区存量土地指挥部...

湖南省召开2022年妇儿工委全体会议

湖南省召开2022年妇儿工委全体会议

2022-08-22 22:20:09 8月22日,湖南省人民政府妇女...

六连胜!中国女排晋级亚洲杯决赛

六连胜!中国女排晋级亚洲杯决赛

2022-08-28 19:45:10 8月28日,2022年女排亚洲...

Eclipse Git 忽略已经提交过的文件 Eclipse Git ignore

Eclipse Git 忽略已经提交过的文件 Eclipse Git ignore...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。