TGViewer
Алгоритмы - Собеседования, Олимпиады, ШАД Алгоритмы - Собеседования, Олимпиады, ШАД @algoses · 12.1K subscribers
Post #364 7.86K
Задача H ШАД 2025

На этот раз разберём задачу H из субботнего экзамена, второго этапа отбор в ШАД. За эту задачу каждый должен был забирать баллы для прохода в следующий этап. Такие задачи по большей части учебные, в очередном отборе в шад убеждаемся, что для успешного закрытия алгосов на экзамене достаточно лишь базовой практики по популярным темам, так что даже вам не нужно набираться реального олимпиадного опыта с задачами спортивного программирования, а для подготовки достаточно непродолжительного времени.

Условие задачи
На отрезке [0, L] (координата L ≤10^6) множество точек.
Всегда присутствуют концы 0 и L. Поддерживаются запросы:
1.добавить новую точку X;
2.удалить существующую точку X;
3.вывести среднее по всем расстояниям между двумя точками в множестве

Разбор
Для начала выведем формулу среднего, answer = Sum / Binom(n, 2) = Sum*2 / (n * (n - 1)) (Binom(n, 2) - это количество возможных пар расстояний, а Sum - сумма по всем расстояниям в паре). В таком случае наша задача сводится к быстрому поддержанию суммы Sum.
Рассмотрим как меняется значение Sum при изменении в точке X (например добавления, а случай удаления абсолютно так же считается, просто учитывается с противоположным знаком).
Все точки слева внесут вклад в сумму равный count(x[i] < X) * X - sum(x[i] | x[i] < X) (то есть мы просто сумму разниц разложим на разницу сумм (сумма элементов X и сумма всех элементов, которые левее, обозначим sum_left), правая сумма вычисляется по аналогичной логике.
delta_S = count(x[i] < X) * X - sum_left + sum_rigtht - count(x[i] > X) * X
Суммы (sum_left, sum_right) и количества (count) мы можем вычислять с помощью структур за O(log L) (например фенвик либо ДО и т п). Далее попробуем оптимизировать эту асимптотику, хотя log L и так достаточно для решения данных ограничений. Считаем все запросы, запомним, а координаты все когда либо использованных значений сожмем (воспользуемся идеями сжатися координат), это позволит нам асимптотику O(log q). Соответственно итоговая асимптотика будет O(qlog q).

@algoses
  • 🔥 7
  • ❤ 2
  • 👍 2
  • ❤‍🔥 1
More from @algoses
  1. Sep 19, 2026Полный цикл отбора в Spectral на SWE (HFT) Недавно рассказывали про отбор в Fast Forward н…
  2. Sep 18, 2026❗️ Яндекс открыл Intern Week Offer на стажировку, где всего за неделю ты можешь получить о…
  3. Sep 18, 2026Задача с собеседования в Zeta Зима близко! Во время соревнования ваша первая задача - спро…
  4. Sep 17, 2026Как стать квантом Сегодня многие талантливые амбициозные ребята хотят попасть в хфт и стат…
  5. Sep 13, 2026Как и зачем тащить ICPC ICPC в большинстве регионов проходит в 4 этапа. Даты зависят от ре…
  6. Sep 12, 2026Как попасть в HFT компанию HFT компании зарабатывают на небольших изменениях цен, осуществ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →