Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解决';超过CPU限制';?_Python_Python 3.x_Algorithm - Fatal编程技术网

Python 如何解决';超过CPU限制';?

Python 如何解决';超过CPU限制';?,python,python-3.x,algorithm,Python,Python 3.x,Algorithm,我试图解决以下问题: 巴塞罗那和皇家马德里之间有一场比赛。[…]有一个 比赛的每一秒都有进球。并非所有的目标都是正确的 有效的,也就是说,一些目标可以在场外完成 遵守规则 [输出]“Aaj Kemon Bodh Korcho”(不带引号)如果巴塞罗那赢得比赛 比赛,“哈拉马德里”(不带引号)如果皇家马德里赢了比赛或 “Meh:\”(不带引号)如果没有赢家 […]从场外完成的目标属于(原文如此)一个团队 著名系列[…]: 0,1,1,2,3,5,8…,,,,,,,,,,,第n项 输入 您将得到一个

我试图解决以下问题:

巴塞罗那和皇家马德里之间有一场比赛。[…]有一个 比赛的每一秒都有进球。并非所有的目标都是正确的 有效的,也就是说,一些目标可以在场外完成 遵守规则

[输出]“Aaj Kemon Bodh Korcho”(不带引号)如果巴塞罗那赢得比赛 比赛,“哈拉马德里”(不带引号)如果皇家马德里赢了比赛或 “Meh:\”(不带引号)如果没有赢家

[…]从场外完成的目标属于(原文如此)一个团队 著名系列[…]:

0,1,1,2,3,5,8…,,,,,,,,,,,第n项

输入 您将得到一个整数T,表示测试次数
cases(T在您的程序中,您有这一行
del store_1[y]
。这是一个根据的O(n)操作。因此,您的代码在O(n2)中工作。这就是为什么您的CPU时间超过了

维护两个计数器,
b=0
m=0
。迭代给定的字符串并查找给定的索引是否是集合的一部分,如果是,则不执行任何操作。否则,检查它是否为
b
m
。相应地,增加计数器并在最后执行必要的检查


此外,不需要多次生成斐波那契数列,您实际上可以一次生成它,并在测试用例中反复使用结果。

有几件事会降低代码的速度:

  • 从0开始,以x为起点,复制之前测试用例中已经生成的相同斐波那契数。您应该只生成尚未生成的斐波那契数
  • 由于上一点,您需要通过应用
    set
    消除重复项,然后您必须对该集合进行排序。如果您只生成唯一的斐波那契数,则不必执行这些操作
  • del
    不是一个固定时间操作。您根本不需要删除列表元素。您真正需要做的就是计数
  • 在一个测试用例中,您可能会调用
    count
    方法四次,而它应该足以执行一次计数
您可以保存更多信息:

  • 实际上,不要将斐波那契数存储在列表中,只需将最后两个值保留在内存中,并在索引达到当前斐波那契数时生成下一个值
  • 记录一个计数,一个平衡,当马德里得分更多时,它将变为正,当巴塞罗那得分更多时,它将变为负
下面是它的样子:

num_of_testcase = int(input())
for i in range(num_of_testcase):
    goals = input()
    balance = 0
    # Fibonacci pair
    a = 3
    b = 5
    # Don't bother looking at index 0-3: they are to be ignored
    for j in range(4, len(goals)):
        if j < b:
            balance += 1 if goals[j] == "M" else -1
        else:
            a, b = b, a+b # Up to next Fibonacci number
    if balance < 0:
        print("Case #{}: Aaj Kemon Bodh Korcho".format(i+1))
    elif balance > 0:
        print("Case #{}: Hala Madrid".format(i+1))
    else:
        print("Case #{}: Meh :\\".format(i+1))
num\u of\u testcase=int(input())
对于范围内的i(测试用例的数量):
目标=输入()
余额=0
#斐波那契对
a=3
b=5
#不要费心看索引0-3:它们将被忽略
对于范围内的j(4,len(目标)):
如果j0:
打印(“案例{}:哈拉马德里”。格式(i+1))
其他:
打印(“Case{}:Meh:\\”。格式(i+1))

请你的问题至少总结一下你的代码试图解决的任务。这是问题的链接。我可以看到,但这就是这里的问题;关于堆栈溢出的问题应该是合理的自包含的。链接会随着时间的推移停止工作,一些访问者无法点击。好吧,我正在编辑它。我做了一个exa正如你所说,但我在testcase 2上仍然收到相同的错误。显示的时间现在短了很多,但仍然是相同的问题。@MahirIslam你在testcase#2上又超时了吗?你能在一些在线IDE中发布代码并将链接粘贴到这里吗comments@MahirIslam我已经更新了你的代码。这应该有效。让我知道结果。这s在第一个测试用例上显示“错误答案”:我在单词
Meh:\\
中漏掉了一个空格。现在更正。如果查看链接,您将看到如下内容:预期输出:案例#1:Hala Madrid案例#2:Aaj Kemon Bodh Korcho您的输出:案例#1:Meh:\Case#2:Aaj Kemon Bodh Korcho抱歉,我不知道,但这就是它在那里显示的内容。如果没有输入信息,我无法对此进行评论。P请查找您认为输出不正确的任何输入。
num_of_testcase = int(input())
for i in range(num_of_testcase):
    goals = input()
    balance = 0
    # Fibonacci pair
    a = 3
    b = 5
    # Don't bother looking at index 0-3: they are to be ignored
    for j in range(4, len(goals)):
        if j < b:
            balance += 1 if goals[j] == "M" else -1
        else:
            a, b = b, a+b # Up to next Fibonacci number
    if balance < 0:
        print("Case #{}: Aaj Kemon Bodh Korcho".format(i+1))
    elif balance > 0:
        print("Case #{}: Hala Madrid".format(i+1))
    else:
        print("Case #{}: Meh :\\".format(i+1))