Бинарный поиск по ответу на Python: как решать + 7 задач с проверкой

Бинарный поиск по ответу — это приём, когда мы не перебираем варианты решения напрямую, а ищем искомое число (время, скорость, уровень, максимальную нагрузку) через проверку: «если ответ равен X, реально ли выполнить условие?». В задачах он встречается там, где нужно найти минимум/максимум при больших ограничениях: сколько минут нужно, какая минимальная скорость, какой минимальный уровень сжатия, как минимизировать «худший рейс» и т.п.

Как распознать

Задача почти наверняка про этот приём, если:

Суть приёма

Мы выбираем границы, где точно «не подходит» и где точно «подходит», и бинарным поиском сужаем диапазон. Проверка ok(X) обычно считается за O(n) или O(n log n), а сам поиск делает около 60 шагов для 64-битного диапазона — поэтому вместо перебора до 10^9 или 10^18 получается быстро.

С чего начать учиться

Ниже — задачи с автопроверкой и разбором подхода, чтобы набить руку на разных формулировках.

Задачи по теме «Бинарный поиск по ответу»

Смежные темы

Весь каталог задач

Куда дальше