Блог пользователя Stefan2417

Автор Stefan2417, история, 6 месяцев назад, По-русски

Мы надеемся вам понравились задачи.

Задача 1977A - Маленький Никита была придумана Stefan2417 и подготовлена alexchist

Задача 1977B - Бинарная покраска была придумана alexchist и подготовлена Stefan2417.

Задача 1977C - Никита и ТЧ была придумана и подготовлена Stefan2417.

Задача 1977D - XORофикатор была придумана и подготовлена alexchist

Задача 1977E - Тензор была придумана и подготовлена Stefan2417

1977A - Маленький Никита

Tutorial
Author's code
Feedback

1977B - Бинарная покраска

Tutorial
Author's code
Feedback

1977C - Никита и ТЧ

Hint
Tutorial
Author's code
Feedback

1977D - XORофикатор

Hint
Tutorial
Author's code
Feedback

1977E - Тензор

Tutorial
Author's code
Feedback

Полный текст и комментарии »

Разбор задач Codeforces Round 948 (Div. 2)
  • Проголосовать: нравится
  • +109
  • Проголосовать: не нравится

Автор Stefan2417, 6 месяцев назад, По-русски

Привет, Codeforces!

Спустя год ожиданий и нескольких полных изменений набора задач я рад пригласить вас принять участие в Codeforces Round 948 (Div. 2), который состоится в воскресенье, 26.05.2024 17:35 (Московское время). Раунд будет рейтинговым для участников с рейтингом менее 2100. Участники из первого дивизиона приглашены принять участие в раунде вне конкурса.

Вам будет дано 5 задач и 2 часа, чтобы их решить. Все задачи раунда придуманы и подготовлены Stefan2417 и alexchist.

В раунде может встретиться 1 или более интерактивных задач. Рекомендуем прочитать этот пост.

Также я хочу поблагодарить:

  • Vladithur за отличную координацию раунда!

Разбалловка: $$$500 — 1250 — 1750 — 2000 — 2500$$$.

Ваше видение разбалловки может отличаться, поэтому не забудьте прочитать дальнейшие задачи, если вы застряли на какой-то.

Upd: Поздравляем победителей!

Div 2:

  1. sun_gan_chou_yu_guan

  2. Maksiwelle

  3. suomynonA

  4. new_mistakes

  5. Kosyaaa

Div 1+2:

  1. tourist

  2. Sugar_fan

  3. sun_gan_chou_yu_guan

  4. abc864197532

  5. BurnedChicken

Upd: Появился Разбор

Полный текст и комментарии »

  • Проголосовать: нравится
  • +273
  • Проголосовать: не нравится

Автор Stefan2417, 17 месяцев назад, По-русски

Рассмотрим следующую задачу:

Дано корневое дерево с $$$n$$$ вершинами. В каждой вершине записан символ $$$c_v \ (1 \leq c_v \leq C)$$$, где $$$C$$$ — размер алфавита. Для каждой вершины $$$v \ (1 \leq v \leq n)$$$ требуется посчитать значение префикс функции на вертикальном пути от корня до $$$v$$$.

Наивное решение

Во время поиска в глубину будем поддерживать стек со значениями префикс функции и пересчитывать ее также, как и в стандартном варианте для 1 строки.

Вспомним, что префикс функция имеет амортизированную асимптотику, поэтому можно построить тест — кисточка, где бамбук состоит из одинаковых букв, а в листьях другие символы. Для каждого листа префикс функция будет искаться за глубину дерева, поэтому итоговая асимптотика составить $$$O (n^2)$$$.

Немного умнее

Будем считать $$$dp[v][sym]$$$ — значение префикс функции в вершине $$$v$$$, если мы перешли в нее по символу $$$sym$$$. Пересчитывать такую динамику удобнее всего лениво, используя пересчет префикс функции из стандартного алгоритма, но учитывая символ по которому перешли в вершину. Всего состояний динамики $$$n \cdot C$$$, и пересчитываются они суммарно за $$$O (n \cdot C)$$$, поэтому асимптотика будет $$$O (n \cdot C)$$$.

Что-то умное

Для удобства понимания представим переходы префикс функции как переходы автомата.

Помимо обычной префикс функции будем считать значение префикс функции, которое оканчивается на отличную от текущей букву, если переходить по переходам префикс функции. Более формально — ищем ближайший префикс после которого идет другой символ. Теперь при вычислении обычной префикс функции мы можем ходить по этим переходам и получить магическую асимптотику в $$$O (n)$$$.

Доказательство данного факта является нетривиальной задачей и остается читателям в качестве упражнения со звездочкой. Предлагается написать его в комментарии.

Задачи на эту идею:

Полный текст и комментарии »

  • Проголосовать: нравится
  • +61
  • Проголосовать: не нравится

Автор Stefan2417, история, 17 месяцев назад, По-русски

Всем привет!

Закончилась моя школьная карьера в соревновательном программировании, и я решил собрать список задач, которые понравились мне/помогли узнать что-то новое. Этот список находится в группе

Полный текст и комментарии »

  • Проголосовать: нравится
  • +71
  • Проголосовать: не нравится

Автор Stefan2417, история, 3 года назад, По-английски

Recently, a lot of accounts involved in mass cheating have started to appear:

kirya_molodec1 kirya_molodec2 kirya_molodec3 kirya_molodec4 kirya_molodec5 kirya_molodec6 kirya_molodec7 amaboss1 amaboss2 amaboss3 amaboss4 amaboss5 amaboss6 amaboss7

These accounts bypass the anti-plagiarism system by adding useless pieces of code and mixing it up. MikeMirzayanov Please improve the anti-plagiarism system.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +69
  • Проголосовать: не нравится

Автор Stefan2417, история, 3 года назад, По-русски

Недавно мне пришло оповещение, что мое решение совпадает с решением FairyWinx в задаче С Codeforces Round 738 (Div. 2). Мне выдали предупреждение, а FairyWinx реджектнули посылки. Я считаю, что это какая-то ошибка и наше решения различаются не меньше, чем 2 случайно взятых по этой задаче. Я понимаю, что для человека раунд все-равно не рейтинговый, но прошу MikeMirzayanov восстановить посылки. Вот посылки: 125968739 125957836

Полный текст и комментарии »

  • Проголосовать: нравится
  • +30
  • Проголосовать: не нравится