Задание EGEINFB1238C: Сортировка, отбор и моделирование

ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий

Открыть решение ↓ Ошибка или пожелание

Тип задачи: Сортировка, отбор и моделирование.

Учебные темы: Массивы и последовательности чисел. Вычисление обобщённых характеристик элементов массива или числовой последовательности (суммы, произведения, среднего арифметического, минимального и максимального элементов, количества элементов, удовлетворяющих заданному условию). Линейный поиск заданного значения в массиве. Алгоритмы работы с элементами массива с однократным просмотром массива. Сортировка одномерного массива. Простые методы сортировки (метод пузырька, метод выбора, сортировка вставками). Сортировка слиянием. Быстрая сортировка массива (алгоритм QuickSort). Двоичный поиск в отсортированном массиве.

Впишите правильный ответ.

Рисунок из условия ФИПИ

Задание выполняется с использованием прилагаемых
файлов.

 

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

 

Входные данные

В первой строке входного файла находится натуральное число N (N ≤ 1000) – количество заявок на проведение мероприятий. Следующие N строк содержат пары чисел, обозначающих время начала и время окончания мероприятий (в минутах от начала суток). Каждое из чисел натуральное, не превосходящее 1440.

Запишите в ответе два числа: максимальное количество мероприятий и самое позднее время окончания последнего мероприятия (в минутах от начала суток).

 

Типовой пример организации данных во входном файле

5

10 150

100 110

131 170

131 180

120 130

При таких исходных данных можно провести максимум три мероприятия, например, по заявкам 2, 3 и 5. Конференц-зал освободится самое позднее на 180-й минуте, если состоятся мероприятия по заявкам 2, 4 и 5.

 

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.

 

 

Скачать файл задания (ZIP, ФИПИ)


i
СВОЙСТВА ЗАДАНИЯ
КЭС:
3.10 Массивы и последовательности чисел. Вычисление обобщённых характеристик элементов массива или числовой последовательности (суммы, произведения, среднего арифметического, минимального и максимального элементов, количества элементов, удовлетворяющих заданному условию). Линейный поиск заданного значения в массиве. Алгоритмы работы с элементами массива с однократным просмотром массива. Сортировка одномерного массива. Простые методы сортировки (метод пузырька, метод выбора, сортировка вставками). Сортировка слиянием. Быстрая сортировка массива (алгоритм QuickSort). Двоичный поиск в отсортированном массиве
Тип ответа:Краткий ответ
Номер: B1238C
НЕ РЕШЕНО Ответить

Решение задания EGEINFB1238C

Ответ: 53 1300

Решение.
В исходном файле 990 заявок. Мероприятия совместимы, когда начало следующего не меньше окончания предыдущего; при равенстве оба разрешены. Сначала максимизируем количество, и только среди расписаний этого количества ищем самое позднее окончание.

Сортируем заявки по времени окончания. Выбираем первую совместимую с уже составленным расписанием и повторяем просмотр. После выбора сохраняем её окончание как новую границу.

Обоснование первого критерия. Среди всех заявок, которые можно поставить следующими, самая рано заканчивающаяся оставляет не меньше времени для продолжения, чем любая другая. В оптимальном расписании можно заменить следующий выбор этой заявкой, не потеряв последующие мероприятия. Повторяя обмен, получаем жадное расписание максимальной длины. Кроме того, его j-я заявка заканчивается не позже j-й заявки любого другого допустимого расписания такой длины.

Для второго критерия сохраняем первые m − 1 мероприятий жадного расписания, где m — найденное максимальное количество. Их последнее окончание минимально среди всех возможных префиксов из m − 1 мероприятий. Поэтому последняя заявка любого оптимального расписания допустима и после этого префикса. Из всех заявок, начинающихся не раньше его конца, выбираем имеющую наибольшее время окончания. Получаем m мероприятий и самое позднее возможное завершение.

В данном файле m = 53, первые 52 выбранные заявки заканчиваются в момент 1020. Среди заявок с началом не раньше 1020 наибольшее окончание равно 1300. Не нужно требовать совпадения времени начала последней заявки с началом прежней последней; достаточно совместимости с префиксом.

Программа Python; data.txt — файл заявок из архива:

with open("data.txt", encoding="utf-8-sig") as f:
    n = int(f.readline())
    events = [tuple(map(int, line.split())) for line in f if line.strip()]
assert len(events) == n
ordered = sorted(events, key=lambda event: (event[1], event[0]))
chosen = []
finish = 0
for start, end in ordered:
    if start >= finish:
        chosen.append((start, end))
        finish = end
prefix_finish = chosen[-2][1] if len(chosen) > 1 else 0
latest = max(end for start, end in events if start >= prefix_finish)
print(len(chosen), latest)

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

Одно достигающее обоих критериев расписание задаётся номерами заявок в исходном файле, без строки заголовка:
654, 327, 105, 903, 20, 312, 639, 204, 258, 261, 450, 249, 918, 705, 983, 589, 537, 572, 899, 588, 587, 58, 655, 502, 31, 861, 367, 827, 656, 34, 546, 925, 175, 198, 22, 569, 763, 868, 732, 314, 975, 649, 687, 250, 632, 9, 638, 965, 123, 140, 850, 570, 101.
Все 53 заявки различны; начало каждой следующей не меньше окончания предыдущей.

Ответ: 53 1300.

Помочь улучшить сайт

Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINFB1238C.

Сообщение увидит только команда сайта: на странице оно не публикуется.

Комментарии к решению

Комментарии видны всем посетителям сайта.

Комментариев пока нет. Будьте первым.

Чтобы оставить комментарий, войдите или зарегистрируйтесь.