鏈接問題:http://www.spoj.com/problems/PRO/SPOJ 726代碼:PRO錯誤的答案?
我做了什麼
問題要求你從列表中選擇的最小和最大元素,並把它添加到總,它使用heapq模塊在Python解決這個問題雖然通過了提供的測試用例,但在提交之後給出了錯誤的答案。
我的問題
什麼是我的代碼錯?
我的代碼
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個。 – 2014-09-28 22:36:50