Проблема сложности времени и применение рекурсивного метода, чтобы найти вывод в следующем вопросе - PullRequest
0 голосов
/ 01 мая 2020

Q- В период карантина из-за коронавируса Aashi sh становится очень скучающим. Поэтому он решил расставить все пустые коробки в своем доме по очереди (в случайном порядке) и поиграть с ним в игру. Эти прямоугольные кубы имеют размерную метку как ширину.

Итак, когда он идет по этой линии, он пытается поместить все предыдущие блоки в строку в текущем блоке (где он стоит). один за другим.

Если он умещается в текущем блоке (в другой блок может поместиться только блок меньшего размера), то он отмечает размер меньшего блока в своем блокноте.

(в основном , он запишет сумму всех ящиков, ранее замеченных в строке, которые меньше, чем текущее поле.)

Рассчитать сумму всех чисел, записанных на его блокноте.

( ПРИМЕЧАНИЕ: ожидаемая сложность времени O (N (logN)), в противном случае будет показано превышение лимита времени)

Формат ввода В первой строке указано количество тестов, T

В первой строке отображается N, количество блоков в строке

В следующей строке указан размер N блоков в строке.

Ограничения

T <= 100 1 <= N <= 10 ^ 7 Все числа будут в диапазоне от 0 до 10 ^ 7. </p>

Формат вывода для В каждом тестовом примере выходные данные дают итоговую сумму для каждого тестового примера в одной строке.

Мой код:

def func1(arr):
    s=0
    for i in range(len(arr)):
        for j in range(i):
            if(arr[j]<arr[i]):
                 s=s+arr[j]
    return s


if __name__ == "__main__":
      n=int(input())
      for i in range(n):
         nb=int(input())
         arr=list(map(int, input().rstrip().split()))
         print(func1(arr))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...