6 мин чтения

Задание 27 ЕГЭ по информатике 2027 — частицы, кинетическая энергия и кластеры

Разбор задания 27 ЕГЭ по информатике 2027: один файл с частицами (координаты, скорость, масса, признак), кластеры по кинетической энергии с порогом R, центры кластеров, Q1 и Q2. Ответ демо одной строкой — 539936 100704. Код на Python.

Задание 27 в 2027 году — частицы и кинетическая энергия. В одном файле лежат частицы с координатами, скоростью, массой и признаком; кластеры строятся по энергии, а не по расстоянию; ответ записывается одной строкой из двух чисел. В демоверсии нужно найти наибольшее расстояние между частицами одного кластера с признаком II и наибольшую энергию центра кластера; ответ 539936 100704. Ниже — условие, формула энергии, приём «сортировка и разрез», код на Python, который печатает ответ ФИПИ, и ловушки.

Форма прошлых лет — точки на плоскости, два файла, кластеры по расстоянию — разобрана в статье о задании 27 2026 года. Понятие центра кластера оттуда переносится сюда почти без изменений.

Условие демоверсии 2027

Рассматриваются частицы на плоскости: декартовы координаты, вектор скорости, масса и признак внутреннего строения — числа от I до VII в римской записи. Учёный решил провести кластеризацию частиц по значениям их кинетической энергии: разбить множество на K непересекающихся непустых подмножеств так, что модуль разности энергий любых двух частиц каждого подмножества не превосходит R. Такое разбиение существует и единственно. Центр кластера — частица, у которой сумма модулей разности энергий со всеми остальными частицами кластера минимальна; центр единственный.

В каждой строке файла: x, y, Vx, Vy, m и признак; разделители — пробелы и табуляции; строк не больше 10 000; модуль каждого числа не больше 100,0. Все частицы разбиваются ровно на 4 кластера (K = 4) с R = 2,0. Найдите Q1 — наибольшее евклидово расстояние между частицами одного кластера с признаком II, и Q2 — максимальную кинетическую энергию среди центров кластеров. В ответе — целая часть Q1 × 10 000, затем целая часть Q2 × 10 000.

Кинетическая энергия: E = m(Vx² + Vy²)/2. Типовой пример — три строки:

0,67  –2,14  3,0  –4,0  0,2   V
3,14   7,22  3,2  4,3  0,7   II
1,33   5,56  0,00  5,22  0,456   IV

Для первой частицы энергия равна 2,5. Ответ ФИПИ для файла демо: 539936 100704.

Энергия вместо расстояния

Главная перемена — величина, по которой строятся кластеры. В прошлые годы это было расстояние между точками; теперь — одно число на частицу, её энергия. Проверим формулу на первой строке примера: масса 0,2, скорость (3; −4), квадрат модуля скорости 9 + 16 = 25, энергия 0,2 × 25 / 2 = 2,5. Сошлось с условием — формула перенесена верно.

ЧастицаmVxVyE = m(Vx² + Vy²)/2
10,23,0−4,02,5
20,73,24,30,7 × (10,24 + 18,49) / 2 ≈ 10,06
30,4560,005,220,456 × 27,25 / 2 ≈ 6,21

Координаты x и y в энергию не входят — они понадобятся только для Q1, расстояния между частицами с признаком II.

Приём: сортировка и разрез

Определение кластера — «разность энергий любых двух частиц не больше R» — само по себе разбиение не задаёт: при некоторых данных подходят несколько разных. Однозначность обеспечивает условие: «гарантируется, что такое разбиение существует и единственно». Собирать его проще всего так: отсортировать частицы по энергии и идти по списку, открывая новую группу каждый раз, когда очередная энергия отстоит от первой энергии текущей группы больше чем на R. Сравнение именно с первой, а не с предыдущей: иначе группа могла бы растянуться цепочкой дальше R.

Число групп после разреза — проверка: условие обещает K = 4, и если получилось не четыре, ошибка в чтении файла или в формуле энергии. В демо группы содержат 501, 601, 701 и 801 частиц.

Старый приём «цепочка по порогу» — обход очередью, где к кластеру присоединяется всё, что ближе R к любой его точке, — здесь не годится: если два кластера по энергии разделены зазором меньше R, цепочка их склеит, а определение требует, чтобы разность любых двух частиц не превышала R. Приём выбирают по определению кластера в условии.

Разрез на маленьком примере

Шесть частиц с энергиями 2,1; 0,9; 2,7; 1,5; 5,6; 2,3, порог R = 1 и три кластера. После сортировки: 0,9; 1,5; 2,1; 2,3; 2,7; 5,6. Первая группа начинается с 0,9 и принимает 1,5 — она отстоит от первой на 0,6. Следующая энергия 2,1 отстоит от 0,9 на 1,2 — новая группа, хотя от предыдущей, 1,5, её отделяет всего 0,6. В неё входят 2,3 и 2,7: от 2,1 они не дальше 0,6. Дальше 5,6 — третья группа. Других разбиений этих шести чисел на три группы с разбросом не больше 1 нет — это и есть единственность, которую гарантирует условие.

ГруппаЭнергииРазброс
10,9; 1,50,6
22,1; 2,3; 2,70,6
35,60

Сравнение с предыдущей энергией вместо первой в группе склеило бы первые две группы в одну с разбросом 1,8 — больше R. Именно поэтому разрез, а не цепочка.

Решение на Python

import math

rows = []
with open("demo_27.txt", encoding="utf-8") as f:
    for line in f:
        parts = line.split()
        if len(parts) < 6:
            continue
        x, y, vx, vy, m = [float(t.replace(",", ".")) for t in parts[:5]]
        rows.append((x, y, vx, vy, m, parts[5]))

def energy(i):
    x, y, vx, vy, m, kind = rows[i]
    return m * (vx ** 2 + vy ** 2) / 2

K = 4
R = 2.0
order = sorted(range(len(rows)), key=energy)

groups = [[order[0]]]
for i in order[1:]:
    if energy(i) - energy(groups[-1][0]) > R:
        groups.append([i])
    else:
        groups[-1].append(i)
print(len(groups), K)                     # 4 4 — обязаны совпасть

def center(group):
    best = group[0]
    best_sum = None
    for i in group:
        total = sum(abs(energy(i) - energy(j)) for j in group)
        if best_sum is None or total < best_sum:
            best_sum = total
            best = i
    return best

q1 = 0.0
q2 = 0.0
for group in groups:
    q2 = max(q2, energy(center(group)))
    marked = [i for i in group if rows[i][5] == "II"]
    for a in marked:
        for b in marked:
            d = math.dist(rows[a][:2], rows[b][:2])
            if d > q1:
                q1 = d

print(int(q1 * 10000), int(q2 * 10000))  # 539936 100704

Чтение: split() режет по пробелам и табуляциям, запятая в дробях меняется на точку перед float, признак остаётся строкой. Энергия — функция от номера частицы. Сортировка и разрез дают четыре группы; print(len(groups), K) — страховка. Центр — частица с наименьшей суммой модулей разностей энергий внутри своей группы; на группах по 500–800 частиц двойной цикл работает секунды. Q1 считается по координатам, но только между частицами одного кластера с признаком II; Q2 — наибольшая энергия центров. В ответ идут целые части произведений на 10 000.

Чем 2027 отличается от демо 2026

Демоверсия 2026Демоверсия 2027
Файлыдва: А и Бодин
Объектточка (x, y) — звездачастица: x, y, Vx, Vy, m, признак
Кластерыточки в непересекающихся прямоугольниках H × Wпо энергии, разность любых двух ≤ R
Приёмразделить точки по положению на плоскостисортировка и разрез
Центрнаименьшая сумма расстоянийнаименьшая сумма модулей разностей энергий
Ответдве строки по два числаодна строка из двух чисел

Если кластер определён иначе — например, «точки одного кластера связаны шагами не длиннее R», — для него нужен обход очередью. Формулировка «разность значений любых двух точек не больше R» — сортировка и разрез. Определение в условии важнее привычки.

Типичные ошибки

Запятая в дробях

float("0,67") падает. Перед переводом заменяй запятую на точку.

Цепочка вместо разреза

Обход по порогу склеивает кластеры, разделённые зазором меньше R. Проверка len(groups) == K ловит это сразу.

Сравнение с предыдущей, а не с первой

Если открывать новую группу по разности с предыдущей энергией, группа растянется дальше R. Сравнение — с первой энергией в текущей группе.

Q1 посчитан по всем частицам

Q1 — только между частицами с признаком II и только внутри одного кластера. Расстояние между частицами разных кластеров не учитывается.

Округление вместо целой части

В ответ идёт int(q * 10000), не round. Разница в единицу — потерянный балл.

Ответ в две строки

С 2027 года — одна строка, два числа через пробел: 539936 100704.

Подборка ошибок по всем номерам — в статье Типичные ошибки на ЕГЭ по информатике.

Тайминг на экзамене

ЭтапВремя
Прочитать условие: формула, K, R, признак, что такое Q1 и Q24 мин
Чтение файла, энергия, проверка на строке примера (2,5)4 мин
Сортировка, разрез, проверка числа кластеров4 мин
Центры, Q1, Q2, запись ответа6 мин
Итого18 мин

Спецификация отводит 36 минут — вдвое больше. Запас стоит потратить на две проверки: энергия первой строки примера равна 2,5 и число кластеров равно K.

Как тренироваться

  1. Проверь формулу энергии на трёх строках примера — 2,5 для первой — прежде чем читать весь файл.
  2. Реши пять заданий с кластерами по одной величине — энергия, масса, расстояние до начала координат — приёмом «сортировка и разрез».
  3. Одно задание прошлых лет с цепочкой по порогу — чтобы видеть разницу определений.
  4. Отработай int(q * 10000) и строку ответа — формальность, на которой теряют балл.

Как изменились остальные номера — в обзоре ЕГЭ по информатике 2027: что изменилось; демозадание в контексте варианта — в разборе демоверсии 2027. Второе задание на два балла с файлом — задание 26; чтение файлов с числами — в разборе задания 17; общий взгляд на задачи с файлами — в статье о динамическом программировании.

Короткий итог

Задание 27 в 2027 году — частицы, энергия E = m(Vx² + Vy²)/2, кластеры по энергии сортировкой и разрезом с проверкой числа кластеров, центры по наименьшей сумме модулей разностей, Q1 по координатам частиц с нужным признаком внутри кластера, Q2 — наибольшая энергия центра. Ответ одной строкой: на демо 539936 100704.

Задания 27 в форме 2027 года с автопроверкой есть в TuteMe: один файл, кластеры по энергии, ответ одной строкой — и каждое задание проверено независимым решением.

Попробовать бесплатно →

Частые вопросы

Что изменилось в задании 27 в 2027 году

Файл один вместо двух, объекты — частицы с координатами, скоростью, массой и признаком, а кластеры строятся не по положению точек на плоскости (в демо 2026 — прямоугольники H × W), а по кинетической энергии: в кластере разность энергий любых двух частиц не больше R. Ответ записывается одной строкой из двух чисел. Два балла, высокий уровень, 36 минут.

Как устроена строка файла

Шесть значений: координаты x и y, проекции скорости Vx и Vy, масса m и признак от I до VII римскими цифрами. Дроби записаны с запятой, разделители — пробелы или табуляции. Строк не больше 10 000, модуль каждого числа не больше 100. В демо-файле 2604 частицы.

Как считать кинетическую энергию

E = m × (Vx² + Vy²) / 2. Для первой строки типового примера — масса 0,2, скорость (3; −4) — энергия 0,2 × 25 / 2 = 2,5, и это число названо в условии как проверка. Энергия не зависит от координат и признака.

Как разбить частицы на кластеры по энергии

Отсортировать по энергии и резать на группы: новая группа начинается, когда очередная энергия отстоит от первой энергии в текущей группе больше чем на R = 2,0. Условие гарантирует, что разбиение на K = 4 кластера существует и единственно, так что число групп после разреза обязано равняться четырём. В демо кластеры по 501, 601, 701 и 801 частиц.

Что такое центр кластера в 2027 году

Частица, у которой сумма модулей разностей энергий со всеми остальными частицами кластера минимальна. Это тот же медоид, что в форме прошлых лет, но по одному числу — энергии — вместо расстояния на плоскости. Центр единственный, это гарантировано условием.

Что такое Q1 и Q2 в демоверсии

Q1 — наибольшее евклидово расстояние между частицами одного кластера, имеющими признак II; расстояние считается по координатам x и y. Q2 — наибольшая кинетическая энергия среди центров кластеров. В ответ идут целые части Q1 × 10 000 и Q2 × 10 000 одной строкой: 539936 100704.

Почему не подходит старый приём «цепочка по порогу»

В демо 2026 кластеры задавались прямоугольниками H × W на плоскости, а при другом определении — например, точки кластера связаны шагами не длиннее R — кластер собирают обходом очередью. Здесь условие другое: разность энергий любых двух частиц кластера не больше R. Цепочка по порогу на энергиях склеила бы соседние кластеры, если зазор между ними меньше R. Правильный приём — сортировка и разрез.

Как записывать ответ

В одну строку таблицы ответа: в первую ячейку — целая часть Q1 × 10 000, во вторую — целая часть Q2 × 10 000. Целая часть — int, не round: в демо Q2 × 10 000 = 100 704,67, и round дал бы 100 705 вместо ключа 100 704. До 2027 года ответ занимал две строки по два числа.

Не пишешь код — или пишешь неуверенно?

Для этого у нас есть курс «Python для ЕГЭ» — язык с нуля ровно в том объёме, который нужен на экзамене: 83 урока, код запускается прямо в уроке, упражнения проверяются автоматически, после каждой темы — реальные задания банка. Первые два модуля открыты бесплатно — можно понять, идёт ли у тебя код, до оплаты.

Посмотреть программу курса →

А задания ЕГЭ можно решать в тренажёре уже сейчас: 7 дней полного доступа бесплатно.