我们不能在codechef和其他著名的编码网站上提问时使用外国图书馆吗?

2024-09-29 01:31:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个关于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))

我想知道这个程序是如何打印最大引线和播放器的,它不使用任何数组和排序函数,那么它是如何记住所有的输出和它们的值的


Tags: in程序forinputoneoperator编号int
1条回答
网友
1楼 · 发布于 2024-09-29 01:31:49

程序不需要存储输入历史。你所需要的只是目前为止最好的结果,那就是领先优势的大小和保持领先优势的球员。你一轮一轮地累积分数。在每一轮结束时,检查当前领先优势是否大于上一轮的最大领先优势。如果是,请更新

你的第一个问题是你检查每一轮的分数差,而不是累计分数。您的代码恰好适用于给定的示例,在该示例中,最大排列恰好在第1轮结束时。您需要找到最大领先,而不仅仅是给定轮的最大差异

我想问题是你存储所有分数的开销,然后对它们进行排序,这会使你超过网站的时间限制。您不需要排序列表,只需要最大值

相关问题 更多 >