Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 900 б
- Dwayne_Johnson 870 б
15 марта 2023 10:13
493
/*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
Остались вопросы?
Еще вопросы по категории Информатика
1 Монитор работает с 16- цветной палитрой в режиме 640х400 пикселей. Для кодирования изображения требуется 1250 Кбайт. Сколько страниц видеопамяти оно...
Задание 3 Решите задачу: матричный принтер имеет скорость печати 512 бит в секунду. Сколько времени нужно затратить на рас-печатку 10 страниц, если ка...
Помогите составить алгоритм на АЯ решения квадратного уравнения и блок схему уравнения ах²+bx+с=2...
Digital Pile-Ons - это: А) интернет-провайдер Б) название браузера В) группа людей, которая в объединяется в социальной сети для того, чтобы писать...
Напишите программу, которая запрашивает три цифры (от 0 до 9) и выводит число, получающееся из этих цифр в том же порядке, что и при вводе. С++ , пож...