
Питон.Айболит сидит под деревом и принимает животных. Про каждого из животных известно, сколько
времени нужно для его приема. Айболит не пьет, не ест и не спит — всё принимает и принимает больных, потому что он очень добрый и ответственный доктор. Айболит хотел бы организовать прием так, чтобы каждый пациент провел в очереди как можно меньше времени. Но для каждого зверя это сделать невозможно, потому что все хотят пройти первыми без очереди. Айболит все же придумал в какой очередности нужно принимать зверей, чтобы суммарное их ожидание в очереди было бы минимальным. Рассчитайте и вы, какое минимальное суммарное время проведут животные в очереди по плану Айболита.

Ответы на вопрос

Ответ:
это задача по программированию поэтому соответственно и ответ программированый
Объяснение:
У меня получается чуть больше одной секунды
from random import randint
from timeit import default_timer as timer
from memory_profiler import memory_usage
A=[]
for _ in range(1000_000):
A.append(randint(1,100_000))
#A=[5,4,3,2,1]
#A=[1,2,3,4,5]
#A=[2,2,2,2,2]
start=timer()
A.sort()
print(timer()-start)
t=A[0]
T=0
for i in range(1,len(A)): T += t; t = t+A[i]
print(T)
print(timer()-start)
print(memory_usage())
===============
0.6925101959999997
16679916879511604
1.226193511
[59.6953125]
>>>



Данная задача является вариацией известной задачи об оптимальном порядке обслуживания (задача о минимизации суммарного времени ожидания). В данном случае, нужно определить оптимальную очередность обслуживания животных, чтобы минимизировать их суммарное время ожидания.
Для решения этой задачи, можно воспользоваться алгоритмом Хаффмана. Этот алгоритм используется для построения оптимальных префиксных кодов, и он также может быть применен к данной задаче. Префиксный код - это способ представления символов (в данном случае животных) с разной длиной кодов, так что ни один код не является префиксом другого. В данном случае, длина кода будет соответствовать времени обслуживания животного.
Шаги алгоритма:
Создайте список или очередь из животных, где каждое животное представлено временем обслуживания.
Пока в очереди остается больше одного животного: a. Извлеките два животных с наименьшим временем обслуживания. b. Создайте новое "виртуальное" животное, с временем обслуживания равным сумме времен обслуживания извлеченных животных. c. Поместите это виртуальное животное обратно в очередь.
После выполнения шагов алгоритма, останется только одно "виртуальное" животное в очереди. Его время обслуживания будет являться минимальным суммарным временем ожидания.
Этот алгоритм гарантирует нахождение оптимальной очередности обслуживания, которая минимизирует суммарное время ожидания животных.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili