0 / 0 / 0
Регистрация: 20.02.2021
Сообщений: 17
|
||||||
1 | ||||||
Решить задачу с уровнем сложности меньше чем О(n^2)05.03.2021, 19:34. Просмотров 2351. Ответов 31
Нужно решить задачу,
У нас есть n гирь, расположенных от самого легкого до самого тяжелого (их веса указаны в поле веса). Несколько гирь могут иметь одинаковый вес. Для простоты мы предполагаем, что вес каждого груза является целым числом в граммах. Реализуйте метод, который возвращает, можем ли мы выбрать любые 2 веса, чтобы сумма их весов была точно h.
0
|
|
05.03.2021, 19:34 | |
Найти сумму баллов за задачу у n учеников меньше чем за остальные что, где и как нужно изменить чтоб решить задачу? ->Сколько лет доходов было меньше 1000, но больше 500 у.е? когда фирма понесла наибольший убыток? Решить задачу симплекс-методом и написать двойственную к ней задачу Помогите решить задачу сломал голову не знаю как решить. |
|
280 / 140 / 63
Регистрация: 21.05.2016
Сообщений: 432
|
|
05.03.2021, 21:56 | 2 |
Для отсортированного массива можно пойти от обратного и попробовать представить какие массивы длины > 2 будут удовлетворять такому условию.
0
|
327 / 253 / 107
Регистрация: 14.06.2016
Сообщений: 513
|
||||||
05.03.2021, 22:22 | 3 | |||||
![]() Решение
0
|
2970 / 2512 / 778
Регистрация: 05.07.2013
Сообщений: 12,162
|
|
05.03.2021, 22:24 | 4 |
Берём первое число х, второе должно быть h-x, массив отсортирован - бинарный поиск
0
|
3275 / 2337 / 425
Регистрация: 28.04.2012
Сообщений: 7,821
|
|
05.03.2021, 23:01 | 5 |
И в худшем случае, когда подходят только последнее+предпоследнее будет O(n logn)
Вот O(n):
0
|
3275 / 2337 / 425
Регистрация: 28.04.2012
Сообщений: 7,821
|
|
05.03.2021, 23:09 | 6 |
А, возможно, я не так понял, для чего тут бинарный поиск и что с его результатом делать ) Тогда да, нужно использовать бинарный поиск.
0
|
280 / 140 / 63
Регистрация: 21.05.2016
Сообщений: 432
|
||||||
05.03.2021, 23:10 | 7 | |||||
Да и если, например, без HashSet:
0
|
2970 / 2512 / 778
Регистрация: 05.07.2013
Сообщений: 12,162
|
|
05.03.2021, 23:11 | 8 |
korvin_, наверно так, твой вариант выглядит лучше
0
|
3275 / 2337 / 425
Регистрация: 28.04.2012
Сообщений: 7,821
|
|
05.03.2021, 23:26 | 9 |
В мой вариант можно добавить предложенный тобой бинарный поиск, немного адаптированный: в случае неудачи он должен вернуть пару индексов элементов, например для шага 1 индексы элементов 9 и 11. Тогда мы берём меньшее или большее число (в зависимости от того в какую сторону двигаемся) и повторяем бинарный поиск в противоположную сторону, чтобы найти индексы для 3 и 5 на втором шаге. В худшем случае, как я понимаю, будет O(n), но в остальном это будет быстрее, хоть и не O(logn).
Добавлено через 3 минуты наоборот. наоборот.
0
|
280 / 140 / 63
Регистрация: 21.05.2016
Сообщений: 432
|
|
05.03.2021, 23:31 | 10 |
Нет, нам же надо найти случай когда любые два элемента != сумме h.
Иначе true - любые два элемента массива есть сумма h.
0
|
3275 / 2337 / 425
Регистрация: 28.04.2012
Сообщений: 7,821
|
|
06.03.2021, 00:29 | 11 |
0
|
280 / 140 / 63
Регистрация: 21.05.2016
Сообщений: 432
|
|
06.03.2021, 01:32 | 12 |
В задаче "любые два" элемента из массива образуют сумму h. Проверять, соответственно, нужно все пары. То есть, если в задаче было бы условие "найдутся такие два элемента, что их сумма равна h", тогда нужно было бы делать наоборот и находить только одну такую пару.
0
|
2970 / 2512 / 778
Регистрация: 05.07.2013
Сообщений: 12,162
|
|
06.03.2021, 01:37 | 13 |
Tavashi, выбрать 2 любых элемента (а и б), таких, что их сумма равна ха (а + б = х)
0
|
280 / 140 / 63
Регистрация: 21.05.2016
Сообщений: 432
|
|
06.03.2021, 01:45 | 14 |
Использование HashSet в редких случаях может увеличить асимптотическую сложность до
O(log(n)) .Добавлено через 4 минуты Ок. Понял задачу иначе. Намудрил ...
0
|
1991 / 1097 / 358
Регистрация: 02.09.2015
Сообщений: 2,894
|
|
06.03.2021, 10:03 | 15 |
Не по теме: Tavashi, xoraxax, korvin_ - товарищи, ну вы что? vcrop уже решил за линию. Добавлено через 5 минут
0
|
3275 / 2337 / 425
Регистрация: 28.04.2012
Сообщений: 7,821
|
|
06.03.2021, 10:31 | 16 |
Arsegg,
во-первых, ценой значительно большего расхода памяти (в худшем случае примерно O(n)), во-вторых, с бинарным поиском в среднем будет примерно O(logn)
0
|
1991 / 1097 / 358
Регистрация: 02.09.2015
Сообщений: 2,894
|
|
06.03.2021, 13:58 | 17 |
Чтобы задействовать бин поиск, нужно предварительно отсортировать массив:
O(n * log(n)) .Добавлено через 7 минут Учитывая, что входной массив O(N) - разница в константу особой роли не сыграет. Добавлено через 3 минуты korvin_, ближе к вечеру могу представить улучшенный вариант уважаемого vcrop без доп. памяти: O(1) - и временем работы O(N) , специально для вас.Добавлено через 6 минут И с бинарным поиском, даже если на вход подавать отсортированный массив, время работы будет O(N * log(N)) , т. к. будет N запросов на бин. поиск O(log(n) .
0
|
xoraxax
|
06.03.2021, 14:14
#18
|
Не по теме: Тему не читай ответ пиши
0
|
3275 / 2337 / 425
Регистрация: 28.04.2012
Сообщений: 7,821
|
|
06.03.2021, 16:05 | 19 |
Arsegg, перечитай тему, спокойно, медленно, каждое сообщение.
0
|
Тематические курсы и обучение профессиям онлайн Java-разработчик (Skillbox) Java-разработчик с нуля (Нетология) Автоматизированное тестирование на Java (Skillbox) |
1991 / 1097 / 358
Регистрация: 02.09.2015
Сообщений: 2,894
|
|
06.03.2021, 18:07 | 20 |
korvin_, значит ли это, что все суммы любых двух весов должны быть точно равны
h или что можно найти такие два веса, что их сумма точно равна h ?
0
|
06.03.2021, 18:07 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь. Решить задачу 2-SAT (задачу выполнимости)
Очень нужно решить задание,сдаю первую сессию и возникли сложности...
Рекурсия: определите подмножество данных чисел, дающих сумму меньше, чем Z и с количеством членов большим чем K Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |