Мінімальна довжина підрядка#12781

Мінімальна довжина підрядка (Розбір)

Автор задачі:

Мар'ян Шийка Підготував:

Мар'ян Шийка Розбір:

Мар'ян Шийка

Ідея

Випишемо в окремий масив позиції всіх букв G у рядку. Нехай кількість таких позицій дорівнює . Оскільки ми виписуємо позиції зліва направо, масив вже буде відсортованим.

Нам потрібно вибрати букв G, які містяться у якомога коротшому відрізку. В оптимальній відповіді ці букв будуть послідовними в масиві . Тому достатньо перебрати всі групи з послідовних елементів.

Для групи

p_i,p_{i+1},\ldots,p_{i+k-1}

найкоротший відрізок, який містить усі ці букви, починається в p_i та закінчується в p_{i+k-1}. Тому його довжина визначається як

p_{i+k-1}-p_i.

Отже, відповідь дорівнює

\min_{1 \le i \le m-k+1}(p_{i+k-1}-p_i).

Загальна асимптотика — .