Вопрос задан 04.07.2023 в 13:37. Предмет Информатика. Спрашивает Тургымбаева Арман.

Питон.Айболит сидит под деревом и принимает животных. Про каждого из животных известно, сколько

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Клонина Алёна.

Ответ:

это задача по программированию поэтому соответственно и ответ программированый

Объяснение:

У меня получается чуть больше одной секунды

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]

>>>

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Данная задача является вариацией известной задачи об оптимальном порядке обслуживания (задача о минимизации суммарного времени ожидания). В данном случае, нужно определить оптимальную очередность обслуживания животных, чтобы минимизировать их суммарное время ожидания.

Для решения этой задачи, можно воспользоваться алгоритмом Хаффмана. Этот алгоритм используется для построения оптимальных префиксных кодов, и он также может быть применен к данной задаче. Префиксный код - это способ представления символов (в данном случае животных) с разной длиной кодов, так что ни один код не является префиксом другого. В данном случае, длина кода будет соответствовать времени обслуживания животного.

Шаги алгоритма:

  1. Создайте список или очередь из животных, где каждое животное представлено временем обслуживания.

  2. Пока в очереди остается больше одного животного: a. Извлеките два животных с наименьшим временем обслуживания. b. Создайте новое "виртуальное" животное, с временем обслуживания равным сумме времен обслуживания извлеченных животных. c. Поместите это виртуальное животное обратно в очередь.

  3. После выполнения шагов алгоритма, останется только одно "виртуальное" животное в очереди. Его время обслуживания будет являться минимальным суммарным временем ожидания.

Этот алгоритм гарантирует нахождение оптимальной очередности обслуживания, которая минимизирует суммарное время ожидания животных.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос