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

  • 10
Сколько билетов каждого типа нужно приобрести пассажиру, чтобы общее количество оплаченных поездок было не меньше n и общая стоимость приобретенных билетов была минимальной? Входные данные: одно число n. Выходные данные: три целых числа, которые представляют количество билетов на одну, десять и шестьдесят поездок соответственно. Примеры: Входные данные: 36 Выходные данные: 0 0 1
Радужный_Мир
16
Чтобы решить данную задачу, нам необходимо использовать жадный алгоритм. Идея заключается в том, чтобы покупать наибольшее количество билетов крупного номинала, а затем заполнять оставшуюся сумму покупкой билетов меньшего номинала.

Давайте разберемся в подробностях. У нас есть три типа билетов: на одну поездку, на десять поездок и на шестьдесят поездок. Наша задача - найти оптимальное количество каждого типа билетов для пассажира, чтобы общее количество поездок было не меньше n и общая стоимость покупки была минимальной.

Пусть X, Y и Z - количество билетов на одну, десять и шестьдесят поездок соответственно. У нас есть следующие ограничения:

1*X + 10*Y + 60*Z >= n - общее количество поездок не должно быть меньше n
minimize X + 10*Y + 60*Z - общая стоимость должна быть минимальной

Очевидно, что количество поездок должно быть максимальным, поэтому сначала попробуем приобрести билеты на шестьдесят поездок (Z). Если общее количество поездок (60*Z) уже превышает или равно n, то мы нашли оптимальное решение, и ответом будет (X, Y, Z) = (0, 0, Z).

В противном случае, мы начинаем уменьшать количество билетов на шестьдесят поездок до тех пор, пока не достигнем минимально возможного значения или пока общее количество поездок не превысит или не станет равным n. Затем мы переходим к покупке билетов на десять поездок (Y) и, если необходимо, на одну поездку (X) для заполнения оставшейся суммы поездок.

Давайте рассмотрим пример с n = 36.

Попробуем приобрести билеты на шестьдесят поездок (Z):
60*Z = 60*0 = 0. Не достигнуто минимально возможное количество поездок, и общая сумма поездок не равна или не превышает n.

Теперь переходим к покупке билетов на десять поездок (Y):
10*Y = 10*0 = 0. Не достигнуто минимально возможное количество поездок, и общая сумма поездок не равна или не превышает n.

Наконец, переходим к покупке билетов на одну поездку (X):
1*X = 1*0 = 0. Не достигнуто минимально возможное количество поездок, и общая сумма поездок не равна или не превышает n.

Таким образом, для достижения общего количества поездок, равного или превышающего n, мы должны приобрести (X, Y, Z) = (0, 0, 0) билетов каждого типа.

Следовательно, ответом на задачу при n = 36 будет (X, Y, Z) = (0, 0, 0).

Именно таким образом мы можем решить данную задачу, используя жадный алгоритм. Однако, обратите внимание, что данный алгоритм может не всегда давать оптимальное решение в общем случае, но в данной задаче он будет работать.