Задание 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. Сошлось с условием — формула перенесена верно.
| Частица | m | Vx | Vy | E = m(Vx² + Vy²)/2 |
|---|---|---|---|---|
| 1 | 0,2 | 3,0 | −4,0 | 2,5 |
| 2 | 0,7 | 3,2 | 4,3 | 0,7 × (10,24 + 18,49) / 2 ≈ 10,06 |
| 3 | 0,456 | 0,00 | 5,22 | 0,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 нет — это и есть единственность, которую гарантирует условие.
| Группа | Энергии | Разброс |
|---|---|---|
| 1 | 0,9; 1,5 | 0,6 |
| 2 | 2,1; 2,3; 2,7 | 0,6 |
| 3 | 5,6 | 0 |
Сравнение с предыдущей энергией вместо первой в группе склеило бы первые две группы в одну с разбросом 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 и Q2 | 4 мин |
| Чтение файла, энергия, проверка на строке примера (2,5) | 4 мин |
| Сортировка, разрез, проверка числа кластеров | 4 мин |
| Центры, Q1, Q2, запись ответа | 6 мин |
| Итого | 18 мин |
Спецификация отводит 36 минут — вдвое больше. Запас стоит потратить на две проверки: энергия первой строки примера равна 2,5 и число кластеров равно K.
Как тренироваться
- Проверь формулу энергии на трёх строках примера — 2,5 для первой — прежде чем читать весь файл.
- Реши пять заданий с кластерами по одной величине — энергия, масса, расстояние до начала координат — приёмом «сортировка и разрез».
- Одно задание прошлых лет с цепочкой по порогу — чтобы видеть разницу определений.
- Отработай
int(q * 10000)и строку ответа — формальность, на которой теряют балл.
Как изменились остальные номера — в обзоре ЕГЭ по информатике 2027: что изменилось; демозадание в контексте варианта — в разборе демоверсии 2027. Второе задание на два балла с файлом — задание 26; чтение файлов с числами — в разборе задания 17; общий взгляд на задачи с файлами — в статье о динамическом программировании.
Короткий итог
Задание 27 в 2027 году — частицы, энергия E = m(Vx² + Vy²)/2, кластеры по энергии сортировкой и разрезом с проверкой числа кластеров, центры по наименьшей сумме модулей разностей, Q1 по координатам частиц с нужным признаком внутри кластера, Q2 — наибольшая энергия центра. Ответ одной строкой: на демо 539936 100704.
Задания 27 в форме 2027 года с автопроверкой есть в TuteMe: один файл, кластеры по энергии, ответ одной строкой — и каждое задание проверено независимым решением.