pdd第三优惠券题,求思路

pdd第三题,购物券问题,思路是先让价格最小的商品划掉能减的最大的券,这个思路有问题吗?样例能过,但提交zero

# -*- coding=utf-8 -*-

import heapq


def get_min_money(prices, heap_max):
    res = 0
    while prices:
        goods = heapq.heappop(prices)  # 价格最小的商品
        i = 0
        if goods < heap_max[i][0]:
            res += goods
        else:
            max_dis = [0, 0]
            max_dis[-1] = -heap_max[i][-1]
            i += 1
            # 找到价格最小的商品能用的最大的券
            while i <= len(heap_max):
                if goods >= heap_max[i][0]:
                    dis = -heap_max[i][-1]
                    if dis > max_dis:
                        max_dis = [i, dis]
                    i += 1
                else:
                    break
            heap_max.pop(max_dis[0])
            heapq.heapify(heap_max)
            res = res + goods - max_dis[-1]
    return res


if __name__ == "__main__":
    n, m = map(int, input().split())
    prices = list(map(int, input().split()))
    heap_max = []
    for i in range(m):
        temp = list(map(int, input().split()))
        temp[-1] = -temp[-1]
        heap_max.append(temp)
    heapq.heapify(heap_max)
    heapq.heapify(prices)

    print(get_min_money(prices, heap_max))
#拼多多#
全部评论
我就是这个思路,直接把商品按价格排序,再一个一个买,全ac了
点赞 回复 分享
发布于 2018-09-21 17:31

相关推荐

10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务