24 задание ЕГЭ информатика
Обработка символьной строки
1 балл ≈ 18 мин уровень В Программа обработки символьной строки
Задание 24 – текстовый файл из одной длинной строки (до миллиона символов). Найти максимальную длину подстроки с условиями: не более/ровно k определённых букв, определённое количество вхождений подстроки, символы чередуются, нет двух одинаковых подряд. 1 балл. Нужна программа с линейным временем.
Метод двух указателей (скользящее окно)
Окно [l; r] расширяется вправо; если условие нарушено – сдвигаем левую границу, пока не восстановится. Так каждое окно с максимальной длиной проверяется за O(n).
s = open("24.txt").readline().strip()
k = 80
best = l = cnt = 0
for r in range(len(s)):
if s[r] == "Y":
cnt += 1
while cnt > k: # нарушили «не более k букв Y»
if s[l] == "Y":
cnt -= 1
l += 1
best = max(best, r - l + 1)
print(best)
«Ровно k» через позиции. Сохрани индексы всех букв Y: pos = [-1] + [i for i, c in enumerate(s) if c == "Y"] + [len(s)]. Окно с ровно k буквами Y от pos[i] до pos[i + k − 1] максимально расширяется до соседних Y: длина = pos[i + k] − pos[i − 1] − 1.
Ещё приёмы
- Самая длинная цепочка без двух одинаковых подряд: счётчик cur, сбрасывающийся при s[i] == s[i − 1].
- Подсчёт вхождений подстроки с перекрытием – цикл по i и s[i:i + 4] == "2025"; s.count() перекрытия не считает.
- Разбиение по символу: s.split("X") – куски без X.
Разобранный пример. s = "AXBXXCXDXEFX", не более 2 букв X. Лучшее окно – "CXDXEF" (длина 6). Программа выводит 6.
Ловушки: перебор всех подстрок O(n2) на миллионе символов не уложится во время; забытый .strip() добавляет символ перевода строки; условия «ровно» и «не менее» требуют разных схем.
- Двух указателей хватает для любого «не более k». Для «ровно k» используй список позиций.
- Читай файл одной строкой: open(...).readline().strip().
- Проверь код на короткой строке, где ответ видно глазами.
Разобранные задания 24 из открытого банка ФИПИ
Пример 1 · код ФИПИ F04010
Текстовый файл состоит из символов T, U, V, W, X, Y и Z. Определите в прилагаемом файле минимальное количество идущих подряд символов (длину непрерывной подпоследовательности), среди которых символ Y встречается не менее 260 раз. Для выполнения этого задания следует написать программу. | |
Показать ответ и решение
Ответ: 817
Записываем позиции всех Y. Окно, в котором ровно 260 символов Y, начинается и заканчивается на Y: длина = pos[i+259] − pos[i] + 1.
Минимум – 817.
Пример 2 · код ФИПИ B92F00
Текстовый файл состоит не более чем из 1 200 000 символов A, B, C и D. Определите максимальное количество идущих подряд символов, среди которых нет символов A и В, стоящих рядом. Для выполнения этого задания следует написать программу. | |
Показать ответ и решение
Ответ: 102
Режем строку между соседними A и B (пары AB, BA); ищем самый длинный кусок.
Программа проходит файл один раз и находит ответ 102.
Пример 3 · код ФИПИ 7DBA1e
Текстовый файл состоит из цифр 0, 5, 6, 7 и знаков арифметических операций «–» и «*» (вычитание и умножение). Определите максимальное количество символов в непрерывной последовательности, которая является корректным арифметическим выражением с целыми неотрицательными числами. В этом выражении никакие два знака арифметических операций не стоят рядом, в записи чисел отсутствуют незначащие (ведущие) нули и число 0 не имеет знака. В ответе укажите количество символов. | |
Показать ответ и решение
Ответ: 211
Динамика по самому длинному корректному выражению, начинающемуся в каждой позиции.
Ответ программы: 211.
Частые вопросы о задании 24
Сколько баллов даёт задание 24 ЕГЭ по информатике?
Максимум – 1 первичный балл. Норма времени на экзамене – около 18 мин. Уровень сложности – В.
Что проверяет задание 24?
Задание 24 – текстовый файл из одной длинной строки (до миллиона символов). Найти максимальную длину подстроки с условиями: не более/ровно k определённых букв, определённое количество вхождений подстроки, символы чередуются, нет двух одинаковых подряд. 1 балл. Нужна программа с линейным временем.
Как подготовиться к заданию 24?
Прочитайте теорию выше: алгоритм, нужные факты и ловушки. Затем решите подход из 10 заданий с автопроверкой и разбором – первые без регистрации – и вернитесь к ошибкам. В пробниках Сотки номер встречается в полных вариантах ФИПИ с подсчётом баллов.
Задание выполняется с использованием прилагаемых файлов.
Задание выполняется с использованием прилагаемых к заданию файлов.
Задание выполняется с использованием прилагаемых файлов.