【发布时间】:2014-11-21 20:12:53
【问题描述】:
问题链接:http://www.spoj.com/problems/PRO/
我做了什么
问题要求您从列表中选择最小和最大元素并将其添加到总数中,它使用python中的heapq模块来解决问题,虽然它通过了提供的测试用例,但提交后给出了错误答案.
我的问题
我的代码有什么问题?
我的代码
import sys
from heapq import *
n = int(sys.stdin.readline())
inp = []
total = 0
for _ in range(n):
text = [int(x) for x in sys.stdin.readline().split()]
k = text[0]
del text[0]
inp.extend(text)
heapify(inp)
while(len(inp)>=2):
Max = inp.pop(-1)
Min = heappop(inp)
total += (Max-Min)
print(total)
【问题讨论】:
-
堆条件只保证堆[0]是最小值。不能保证最大值是堆[-1]。测试用例通过可能是一个意外。我怀疑如果您以正确的方式随机分配
4 10 5 5 1,最后可能没有 10 个。
标签: python python-2.7 python-3.x heap