Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 900 б
- Dwayne_Johnson 870 б
15 марта 2023 10:13
537
/*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
Остались вопросы?
Еще вопросы по категории Информатика
какова мощность алфавита, с помощью которого записано сообщение, содержащее 4096 символов, если объем сообщения составляет 1,5 Кбайт?...
Проанализируй и запиши ответы. C∨(D∨M)=C∨D∨M P∨(D∧M)=P∨D∨M U&(D&M)=U&D&M...
Алфавит некоторого языка состоит из 64 символов. За сколько секунд можно передать текст из 2000 символов, если скорость передачи — 50 байтов в секунду...
У исполнителя Счетчик две команды, которым присвоены номера: вычти три умножь на два Первая команда уменьшает число на экране на 3, вторая - удва...
Необходимо отгадать слово, состоящее из 5 букв и записанное с помощью алфавита из 32 букв. Можно задавать вопросы ответом на которые будет "да" или "н...