Все темы
147

Разреженная таблица: статический минимум на отрезке

Tier 1Закрыто

Где применяется

1. Задача

Два прошлых урока строили деревья отрезков. Они отвечают на запрос про отрезок и принимают изменения, и то и другое за O(log n). Теперь данные перестают меняться. Лог-файл закрывается в полночь, справочная таблица поставляется вместе с приложением, сетка головоломки задана заранее. Записей больше не будет. При этом на тысячи вопросов «какое наименьшее значение между индексами l и r» отвечать всё ещё надо.

Дерево отрезков здесь подойдёт, но O(log n) на запрос дороже, чем нужно. Если массив никогда не меняется, можно заранее посчитать столько, что каждый запрос минимума на отрезке будет стоить O(1). Эта структура называется разреженной таблицей.

Этот шаг из платной части

Бесплатные шаги в начале курса (их 33) открыты всем: урок, задача и тесты. Этот шаг открывается с полным доступом. Начни с бесплатного аккаунта и бесплатных шагов.

Завести бесплатный аккаунтПосмотреть, что входит

На LeetCode

Задачи на массив, который не меняется, с большим числом вопросов про минимум, максимум или НОД на отрезке. После построения за O(n log n) два перекрывающихся блока отвечают на каждый отрезок за O(1). LeetCode не называет разреженную таблицу по имени, и большинство таких задач проходят и монотонный дек, и дерево отрезков.

Мы используем необходимые куки для работы сайта (вход и язык). Если ты согласишься, мы также загрузим Google Analytics, чтобы видеть, какие страницы читают, и Google reCAPTCHA для защиты форм обратной связи и сообщений об ошибке от спама. Политика конфиденциальности