Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 900 б
- Dwayne_Johnson 870 б
15 марта 2023 10:13
446
/*14.1. Бонни и Клайд (6) Задача выполнена студентом ПС 21 Желаевым Денисом.Бонни и Клайд задумали ограбить в некотором городе два банка. Все N банков в этом городе находятся на его главной улице.Для каждого i-го банка известны расстояние от начала улицы Xi и имеющаяся сумма денег Wi. Чтобы было меньше шума,Бонни и Клайд собираются выбрать такую пару банков, чтобы расстояние между ними было не менее d.Вместе с тем они хотят, чтобы сумма денег в обоих банках оказалась максимальной. Как это сделать?
1
ответ
Для решения данной задачи можно использовать алгоритм двух указателей (two pointers).
Сначала необходимо отсортировать массив банков по расстоянию от начала улицы (Xi). Затем можно пройти по массиву с двух концов с помощью двух указателей (left и right), начиная с самых дальних банков.
На каждом шаге необходимо проверять, что расстояние между банками (Xi - Xj) не меньше d. Если это условие выполняется, то можно суммировать деньги в обоих банках (Wi + Wj) и сравнить с максимальной суммой, найденной до этого. Если текущая сумма больше, то обновляем максимальную сумму.
Алгоритм завершается, когда указатели встретятся. В этом случае будет найдена максимальная сумма денег в паре банков, удовлетворяющих условию на расстояние.
Временная сложность алгоритма составляет O(nlogn) за сортировку массива и O(n) за проход по массиву, то есть общая сложность O(nlogn).
Сначала необходимо отсортировать массив банков по расстоянию от начала улицы (Xi). Затем можно пройти по массиву с двух концов с помощью двух указателей (left и right), начиная с самых дальних банков.
На каждом шаге необходимо проверять, что расстояние между банками (Xi - Xj) не меньше d. Если это условие выполняется, то можно суммировать деньги в обоих банках (Wi + Wj) и сравнить с максимальной суммой, найденной до этого. Если текущая сумма больше, то обновляем максимальную сумму.
Алгоритм завершается, когда указатели встретятся. В этом случае будет найдена максимальная сумма денег в паре банков, удовлетворяющих условию на расстояние.
Временная сложность алгоритма составляет O(nlogn) за сортировку массива и O(n) за проход по массиву, то есть общая сложность O(nlogn).
0
·
Хороший ответ
15 марта 2023 10:14
Остались вопросы?
Еще вопросы по категории Информатика
СРОЧНО!!!! Антивирусная программа, способная перехватить вирус в момент заражения. Антивирусная программа, которая удаляет вирусы из файлов. Пакет...
Помогите с информатикой пожалуйста 2. Определите значение переменной а после исполнения следующего алгоритма. Порядок действий соответствует правилам...
Выберите знаковые информационные модели: диаграмма продаж карта Луны рисунок магазина кассовый чек фотография Луны О нотная запись Лунной сонаты...
На рисунке изображена схема дорог, связывающих торговые точки А, Б, В, Г, Д, Е, К. По каждой дороге можно двигаться только в направлении, указанном ст...
Залипают клавиши в играх Такие дела: При игре (когда часто используется несколько одновременно нажатых клавишь) через некоторое время наблюдается "за...