Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 11.09.2018, 21:28   #1 (permalink)
Aleksei2213
Новичок
 
Регистрация: 26.08.2018
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Как увеличить скорость кода и уменьшить выделение памяти?

Код:
2# кол списков
3 99 99 99 99 # первое число кол элементов  в списке -1
2 33 33 33

import math



log_2 = math.log(2) # для оптимизации вывел сюда
h = {}
i = 0
for _ in range(int(input())): 
    s = input()[2:]
    s = s.split()
    if '1' in s: # удаляю первое число и елиницы такой список 2 2 1 99 станет 2 1
        s = s[:s.index('1') + 1]
    s = list(map(float, s)) # для ускорения
    if len(s) == 1: # три случая если длина 1
        acc = -9
        s = []
    elif len(s) == 2: # если длина 2
        v1, v2 = s
        acc = math.log(v2) / log_2+math.log(math.log(v1) / log_2) 
        s = []
    else: # общий случай
        *s, v1, v2, v3 = s
        acc = v3 * math.log(v2) / log_2 + math.log(math.log(v1) / log_2) 
        for n, it in enumerate(reversed(s)): # если цифр много до раскрываю
            if acc > 190:
                break
            acc = (2 ** acc) + math.log(math.log(float(s[-1])) / log_2) / log_2
            del s[-1]
    acc = round(acc, 10)
    a = [int(item) for item in s]

    a.append(acc)
    a.reverse()
    h[i] = [float(item) for item in a] # заполняю словарь списком
    s = []
    a = []
    # print(h[i])
    i += 1

sorted_list = sorted(h.items(), key=lambda x: (len(x[1]), x[1])) # сортирую
print(' '.join(str(i + 1) for i, _ in sorted_list)
Aleksei2213 вне форума   Ответить с цитированием

Старый 11.09.2018, 21:28
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

На форуме так же имеются темы у которых схожее содержание

Динамическое выделение памяти
Большое выделение памяти
выделение памяти
Как уменьшить скорость EDGE?
Как увеличить скорость работы USB-флеш памяти

Старый 10.10.2018, 13:31   #2 (permalink)
crypton22
Новичок
 
Регистрация: 25.09.2018
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Очень интересно
crypton22 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 10:11.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.