拼多多满减优惠 AC代码 python

思路就是从价值最高的优惠券开始遍历尝试,价值相同的优惠券则先尝试需要满足的金额小的,然后用在比满减所需金额大的商品中最便宜的那个上,就ok

from sys import stdin as f
[n,m] = [int(i) for i in f.readline().split()]
price = sorted([int(i) for i in f.readline().split()],reverse=True)

dc = {}
for i in range(m):
    [man,jian] = [int(i) for i in f.readline().split()]
    if jian in dc:
        dc[jian]+=[man]
    else:
        dc[jian]=[man]
        
for k,v in dc.items():
    dc[k] = sorted(v)


def used():
#    dc = deepcopy(dcc)
    num = 0
    dc_value = sorted(dc,reverse = True)
    while price and dc_value:
        
        dc_max = dc_value[0]
        
        if price[0]<dc[dc_max][0]:
            dc.pop(dc_max)
            dc_value.pop(0)            
            continue
#        print(dc)
        mv = dc[dc_max].pop(0)
            
        
        index = 0
        while index<len(price):
            if (index+1)<len(price) and price[index+1]>=mv:
                index+=1
            else:
                break
            
        num+= dc_max
#        print(num)
        price.pop(index)
        
        if not dc[dc_max]:
            dc.pop(dc_max)
            dc_value.pop(0)
            
    return num

all_m = sum(price)
print(all_m - used())

#拼多多##笔试题目##秋招#
全部评论
可以凑单吗
点赞 回复 分享
发布于 2018-09-21 17:33

相关推荐

04-13 18:10
门头沟学院 Java
想熬夜的小飞象在秋招:被腾讯挂了后爸妈以为我失联了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务