我在做一个关于codechef的问题,却被这个问题困住了:https://www.codechef.com/problems/TLG
在这个问题中,我们必须输入一个编号,这将是问题的测试用例的编号。然后我们必须再输入两个整数。这些整数将取 球员的得分以“a b”格式。最后程序将显示特定球员在比赛中的领先优势和球员编号(即1或2)。我的程序是:
import operator
from operator import itemgetter
p = []
k = []
u = []
for r in range(int(input())):
one,two = input().split()
one = int(one)
two = int(two)
p.append((one,two))
for (one,two) in p:
if (one)> (two):
y = (one) - (two)
m =1
else:
y = (two) - (one)
m = 2
k.append((m,y))
foo = k
foo.sort(key=lambda x:x[1])
h = foo[-1]
u.append(h)
b = list(map(operator.itemgetter(0), u))
r = list(map(operator.itemgetter(1), u))
print(b[0],r[0])
我的程序有什么问题?网站显示我的答案是错误的。 然后我搜索了其他提交的文件,发现:
t = int(input())
p1 = 0
p2 = 0
maxi = 0
leader = 1
for i in range(t):
x,y = map(int,input().split())
p1+=x
p2+=y
if abs(p1-p2) > maxi:
leader = 1 if p1 > p2 else 2
maxi = abs(p1-p2)
print('{} {}'.format(leader,maxi))
我想知道这个程序是如何打印最大引线和播放器的,它不使用任何数组和排序函数,那么它是如何记住所有的输出和它们的值的
程序不需要存储输入历史。你所需要的只是目前为止最好的结果,那就是领先优势的大小和保持领先优势的球员。你一轮一轮地累积分数。在每一轮结束时,检查当前领先优势是否大于上一轮的最大领先优势。如果是,请更新
你的第一个问题是你检查每一轮的分数差,而不是累计分数。您的代码恰好适用于给定的示例,在该示例中,最大排列恰好在第1轮结束时。您需要找到最大领先,而不仅仅是给定轮的最大差异
我想问题是你存储所有分数的开销,然后对它们进行排序,这会使你超过网站的时间限制。您不需要排序列表,只需要最大值
相关问题 更多 >
编程相关推荐