24

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 раз.

Для выполнения этого задания следует написать программу.

Файл к заданию (ZIP)

Показать ответ и решение

Ответ: 817

Записываем позиции всех Y. Окно, в котором ровно 260 символов Y, начинается и заканчивается на Y: длина = pos[i+259] − pos[i] + 1.

Минимум – 817.

Пример 2 · код ФИПИ B92F00

 Рисунок к заданиюЗадание выполняется с использованием прилагаемых к заданию файлов.

Текстовый файл состоит не более чем из 1 200 000 символов A, B, C и D. 

Определите максимальное количество идущих подряд символов, среди которых нет символов A и В, стоящих рядом.

Для выполнения этого задания следует написать программу.

Файл к заданию (ZIP)

Показать ответ и решение

Ответ: 102

Режем строку между соседними A и B (пары AB, BA); ищем самый длинный кусок.

Программа проходит файл один раз и находит ответ 102.

Пример 3 · код ФИПИ 7DBA1e

 Рисунок к заданиюЗадание выполняется с использованием прилагаемых файлов.

Текстовый файл состоит из цифр 0, 5, 6, 7 и знаков арифметических операций «–» и «*» (вычитание и умножение). Определите максимальное количество символов в непрерывной последовательности, которая является корректным арифметическим выражением с целыми неотрицательными числами. В этом выражении никакие два знака арифметических операций не стоят рядом, в записи чисел отсутствуют незначащие (ведущие) нули и число 0 не имеет знака.

В ответе укажите количество символов.

Файл к заданию (TXT)

Показать ответ и решение

Ответ: 211

Динамика по самому длинному корректному выражению, начинающемуся в каждой позиции.

Ответ программы: 211.

Частые вопросы о задании 24

Сколько баллов даёт задание 24 ЕГЭ по информатике?

Максимум – 1 первичный балл. Норма времени на экзамене – около 18 мин. Уровень сложности – В.

Что проверяет задание 24?

Задание 24 – текстовый файл из одной длинной строки (до миллиона символов). Найти максимальную длину подстроки с условиями: не более/ровно k определённых букв, определённое количество вхождений подстроки, символы чередуются, нет двух одинаковых подряд. 1 балл. Нужна программа с линейным временем.

Как подготовиться к заданию 24?

Прочитайте теорию выше: алгоритм, нужные факты и ловушки. Затем решите подход из 10 заданий с автопроверкой и разбором – первые без регистрации – и вернитесь к ошибкам. В пробниках Сотки номер встречается в полных вариантах ФИПИ с подсчётом баллов.

Упражнения к заданию 24

10 заданий подряд с проверкой и разбором · первые 7 – без регистрации