ЕГЭ · ЗАДАНИЕ 27
Анализ данных и кластеризация · практика 10
Энергии частиц: 8, 9, 11, 18, 19, 21. Примените алгоритм: отсортируйте энергии, возьмите минимальную оставшуюся и включите в группу все оставшиеся частицы с энергией не более чем на 3 выше неё. Повторяйте до исчерпания частиц. Центр группы — частица с минимальной суммой модулей разностей энергий внутри группы; при равенстве выбирается меньшая энергия. Запишите число групп и максимальную энергию среди центров.
Учебная модель Академии С для проверки приёма. Не выдаётся за задание реального экзамена.
Источник задания
Сначала попробуй решить самостоятельно, затем открой разбор. Для автоматической проверки ответа включи JavaScript.
Показать решение по шагам
Разбор решения
Ответ: 2 19
Решение по шагам
- Границу группы отсчитываем от её минимальной энергии, а не от последнего добавленного элемента.
- Получаем группы: 8, 9, 11; 18, 19, 21. В каждой разность максимума и минимума не превышает 3.
- В группе из трёх отсортированных значений сумма модулей отклонений минимальна на среднем значении. Центры: 9, 19.
- Число групп: 2. Наибольший центр: 19. Ответ: 2 19.
| Группа | Кандидат в центр | Сумма отклонений |
|---|---|---|
| 1 | 8 | 4 |
| 1 | 9 | 3 |
| 1 | 11 | 5 |
| 2 | 18 | 4 |
| 2 | 19 | 3 |
| 2 | 21 | 5 |
Проверка на Python
energies = [8, 9, 11, 18, 19, 21]
groups = []
for value in sorted(energies):
if not groups or value - groups[-1][0] > 3:
groups.append([value])
else: groups[-1].append(value)
centers = [min(g, key=lambda x: (sum(abs(x-y) for y in g), x)) for g in groups]
print(len(groups), max(centers))