2-й Универсальный кубок. Этап 19: Эстония. Проблема F. Когда Антон Увидел Это Задание, Он Отреагировал С Энтузиазмом 😫

YOUTUBE · 29.11.2025 03:57

Ключевые темы и таймкоды

Введение

0:00
  • Видео представляет конкурс программирования, где участники должны решить задачу по дереву сегментов и матрицам.
  • Задача включает в себя создание декомпозиции "тяжелый свет" и построение дерева сегментов на матрицах.

Чтение входных данных

13:54
  • Участники должны прочитать входные данные, которые включают в себя дерево, запросы и тесты.
  • Они также должны создать структурный тест, который представляет собой вектор из трех точек.

Решение задачи

21:03
  • Участники должны написать функцию, которая решает задачу, используя декомпозицию "тяжелый свет" и дерево сегментов.
  • Они должны также создать функцию для умножения матриц и функцию для суммирования целых чисел по модулю m.
  • В конце участники должны записать умножение матриц и подготовить решение задачи.

Создание матрицы идентификатора

33:59
  • Создается матрица идентификатора, которая используется для хранения информации о том, к какому пути принадлежит каждая вершина.
  • Вершины хранятся в виде структурного пути, который включает в себя дерево сегментов, номер вершины, вектор и родительский элемент.

Разложение на тяжелые и легкие части

47:24
  • Вершины делятся на тяжелые и легкие, в зависимости от их размера.
  • Для каждой вершины вычисляется ее размер и путь, на котором она находится.
  • Вершины с размером, равным нулю, считаются листьями и хранятся отдельно.

Обновление конструктора и hld

57:46
  • Обновляется конструктор, который учитывает размер и вектор каждой вершины.
  • Вершины с размером, равным нулю, считаются листьями и хранятся отдельно.
  • Для восстановления декомпозиции тяжелого света используется dfs.

Расчет размеров поддеревьев

1:05:28
  • Используют функцию dfs для расчета размеров поддеревьев.
  • Размеры поддеревьев равны количеству вершин.

Создание путей

1:10:04
  • Используют функцию dfs для создания путей.
  • Векторы вершин используются для хранения информации о путях.

Создание деревьев сегментов

1:16:27
  • Используют функцию dfs для заполнения векторов.
  • Создают деревья сегментов для каждого пути.

Обновление векторов и путей

1:29:58
  • Обновляют векторы вершин и пути при изменении значения вершины.
  • Обновляют пути, если текущая вершина не является корнем.

Обновление матрицы

1:35:59
  • В видео автор объясняет, как обновить матрицу, используя информацию о текущей вершине и ее родительской вершине.
  • Он также объясняет, как определить, где именно в матрице обновить значение, используя пути родительских вершин.

Проблемы с кодом

1:41:11
  • Автор обнаруживает ошибки в коде, связанные с неправильным инициализацией векторов и использованием отрицательных чисел.
  • Он исправляет ошибки и запускает код снова, получая более корректные результаты.

Завершение работы

1:47:36
  • Автор завершает работу над кодом, успешно отправляя его на проверку.
  • Он также обсуждает результаты проверки и делает вывод о том, что его код прошел проверку.