Неофициальный разбор Codeforces Round #536 (Div. 2)
Difference between ru2 and ru3, changed 24 character(s)
[problem:1106A]↵
------------------↵

Автор контеста случайно опубликовал разбор задачи в её условии. Необходимо перебрать клетку и проверить, что она является центром креста.↵

Асимптотика $O(n * m)$↵

 [problem:1106B]↵
------------------↵

Заметим, что каждый человек получит либо $d_{j}$ блюд типа $t_{j}$, либо $r_{t_{j}}$ блюд типа $t_{j}$ и получит целиком и получит некоторый префикс самых дешевых блюд и, возможно, часть запасов какого-либо блюда. Будем поддерживать set доступных блюд, отсортированный по стоимости. На каждой итерации, кроме блюд, которые исчезли навсегда, мы просматриваем не более одного блюда.↵

Асимптотика $O((n + m)\log{}n)$↵

 [problem:1106C]↵
------------------↵

Для начала заметим, что в каждой группе должно быть ровно два элемента, так как $(a + b) ^ 2 > a ^ 2 + b ^ 2$ для положительных $a$ и $b$↵

Покажем, что $a_{i}$ и $b_{i}$ должны стоять на "противоположных" позициях в отсортированном массиве, так как↵

$\sum_{i = 1}^{n / 2} (a
 + b_{i} + b_{j})^2 = \sum_{i = 1}^{n / 2} (a)a_{i}^2 + \sum_{i = 1}^{n / 2} (b)b_{j}^2 + \sum_{i = 1}^{n / 2}\sum_{j = 1} ^ {n / 2} a_{i} * b_{j}$↵

То есть нам надо минимизировать третье слагаемое. Теперь такой выбор $a_{i}$ и $b_{i}$ следует из транснеравенства ([доказательтво](https://www.mccme.ru/s43/math/uroki/2009_2010/9mat_0910/spec/55_nerav3_lect.pdf)).↵

Асимптотика $O(n\log{}n)$↵

 [problem:1106D]↵
------------------↵

Допустим, мы знаем префикс ответа длины $i$. Тогда на следующем шаге мы можем пойти в любую вершину, соседнюю с уже посещенной. Очевидно, что стоит идти в вершину с минимальным номером. ↵

Это можно сделать используя bfs с приоритетной очередью.↵

Асимптотика $O(n\log{}n + m)$↵

 [problem:1106E]↵
------------------↵

Задача решается методом динамического программирования. Обозначим за $dp[i][j]$ минимальное количество монет у Боба, если он сейчас выбирает конверт в момент времени $i$ и Алиса уже отвлекла его $j$ раз.↵

Тогда из $dp[i][j]$ можно перейти в $dp[i + 1][j + 1]$ (если Алиса отвлекает его на $i$-том ходе) и в $dp[d_choice + 1][j]$, где $d_{choice}$ — $d$ конверта, который выберет Боб.↵

Если использовать метод сканирующей прямой, то можно в каждой момент поддерживать set доступных конвертов отсортированный по убыванию $w$. Тогда мы сможем узнавать выбор Боба на каждой итерации за $O
(\log{}n)$.↵

Асимптотика $O(n\log{}k + n * m)$↵

 [problem:1106F]↵
------------------↵

В разработке.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
ru8 Russian _overrated_ 2019-02-01 16:40:35 692 (опубликовано)
ru7 Russian _overrated_ 2019-02-01 16:28:21 1873 Мелкая правка: '------\n\nКод:[s' -> '------\n\nДопустим $f_{k} == x$\n\nКод:[s' (сохранено в черновиках)
ru6 Russian _overrated_ 2019-02-01 15:28:16 38 Мелкая правка: '------\n\nВ разработке.' -> '------\n\nКод:[submission:49321335]\n'
ru5 Russian _overrated_ 2019-01-31 20:45:18 4 Мелкая правка: 'тика $O(n * m)$\n\nКод:' -> 'тика $O(n ^ 2)$\n\nКод:'
ru4 Russian _overrated_ 2019-01-31 20:42:29 147
ru3 Russian _overrated_ 2019-01-31 20:23:48 24 (опубликовано)
ru2 Russian _overrated_ 2019-01-31 20:19:47 791 Мелкая правка: 'й очередью' -> 'й очередью.\n\nАсимптотика $O(n\log{}n)$\n\n\n'
ru1 Russian _overrated_ 2019-01-31 20:03:30 1701 Первая редакция (сохранено в черновиках)