Скоро Codeforces Round 1133 (Div. 1, Div. 2)! Регистрация здесь. ×

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

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

(так как у меня нет подписчиков, этот пост, вероятно, просмотрит мало людей, так что если ты наткнёшься на него спустя месяцы/годы — да, ещё актуально)

Я ищу классные алгоритмы или структуры данных, которые любопытны, хитроумны и интересны, но при этом не запредельно сложны, так чтобы их можно было заново пере-изобрести самому при решении какой-то задачи.

Мои текущие знания для контекста

Пере-открыл сам:

(вещи, которые я придумал до того, как прочитал/был-ознакомлен о них)

  • Полиномиальные хэши строк
  • Выпуклая оболочка
  • Персистентные структуры данных, такие как деревья (благодаря знакомству с функциональным программированием, иммутабельностью и т.п.)
  • Min-span tree графа

Хорошо знаю:

  • Различные графовые алгоритмы
  • Различные деревья
  • Дерево отрезков
  • Префиксная функция, Алгоритм Ахо-Корасик
  • Динамическое программирование
  • Система непересекающихся множеств
  • Парсинг с помощью рекурсии

Помню в общих деталях:

  • Суффиксный массив

Запрогал хотя бы раз, но не разбирался глубоко и забыл:

  • Min/max поток графа
  • Суффиксный автомат
  • Структура данных, подобная дереву отрезков, которая может выполнять только часть операций, но имеет меньшую константу и меньшее потребление памяти (не помню название)

Это не полный список того, что я знаю, но, надеюсь, он даёт общее представление, что я, скорее всего, не знаю, и что мне покажется интересным.

В идеале ищу:

  • Ссылки на задач(у/и) CodeForces
  • Название алгоритма/структуры данных, необходимой для её решения (информация, которую я постараюсь не использовать/гуглить, прежде чем решить самостоятельно)
  • Ориентировочная сложность пере-изобретения данного алгоритма и решения соответствующей задач(и)
  • Проголосовать: нравится
  • +32
  • Проголосовать: не нравится

»
21 месяц назад, скрыть # |
← Rev. 2  
Проголосовать: нравится +10 Проголосовать: не нравится

https://codeforces.me/problemset/problem/1949/B

Try to solve this in a time complexity that is not $$$O(n^2)$$$ or beyond. With this, you would reinvent:

Spoiler

Pardon me if I failed to meet your constraints due to my inexperience.

»
21 месяц назад, скрыть # |
← Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Not codeforces, but I like this problem a lot. It is in romanian but translation should be relatively simple. Try to do it in $$$O(N)$$$.

Problem

»
21 месяц назад, скрыть # |
 
Проголосовать: нравится +18 Проголосовать: не нравится

I suggest you to re-invent factorization algorithm which works in $$$O(poly(\log(n)))$$$ time where $$$n$$$ is the number to factorize.

»
21 месяц назад, скрыть # |
 
Проголосовать: нравится +12 Проголосовать: не нравится

Such a flex

»
21 месяц назад, скрыть # |
← Rev. 2  
Проголосовать: нравится +3 Проголосовать: не нравится
»
21 месяц назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Советую попробовать:

  • Задача о динамической связности (погугли, можно найти трен контест от адаманта с задачей просящей написать алгос в лоб)

  • 1444C - Тимбилдинг очень крутая задача

  • 1416D - Граф и запросы тоже крутой трюк который можно пере-изобрести

»
21 месяц назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

You can try 321C.

Solving this problem I reinvented...

You can also try CSES, Substring Reversals. On this problem I did not reinvent anything but I had a lot of fun thinking and learning / searching for stuff on the internet.

I learned...