以省时的方式解决Python中的新年混乱问题

时间:2019-04-13 17:06:56

标签: python timeout

今天是元旦,每个人都在排队玩仙境过山车!有很多人在排队,每个人都戴着一个贴纸,指示他们在队列中的初始位置。初始位置从行首的1到行尾的n递增1。

队列中的任何人都可以贿赂在他们前面的人以交换职位。如果两个人调换职位,他们仍然会贴上相同的标签,以表示他们原先的位置。一个人最多可以贿赂另外两个人。  例如,如果n = 8并且第5个人贿赂第4个人,则队列将如下所示:1,2,3,5,4,6,7,8

打印一个整数,该整数表示使队列进入最终状态所需的最少贿赂数量。如果状态无效,即要求一个人贿赂超过2个人,则打印太混乱

我尝试了以下代码,但在较大的测试用例中超时

#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the minimumBribes function below.
def minimumBribes(Q):
    bribe=0



    for _ in range(len(q)):
        max_index = q.index(max(q))

        q_len = len(q)
        if max_index + 3 < q_len:
            return("Too chaotic")

        if max_index + 2 < q_len:
            bribe += 2
            del q[max_index]
        elif max_index + 1 < q_len:
            bribe += 1
            del q[max_index]

        elif max_index == q_len - 1:
            del q[max_index]

    return(bribe)

if __name__ == '__main__':
    t = int(input())

    for t_itr in range(t):
        n = int(input())

        q = list(map(int, input().rstrip().split()))

        print( minimumBribes(q))
sample input:
2
5
2 1 5 3 4
5
2 5 1 3 4

sample output: 
3
Too chaotic

0 个答案:

没有答案