ы

Revision ru1, by Goddless, 2025-10-24 19:24:40

Всем привет! Давно не было разборов, поэтому сегодня я решил сделать разбор на сегодняшний div2 контест. Всем приятного просмотра, а если возникнут вопросы, смело смотрите код решения. Постараюсь объяснить максимально понятно, ну от вас жду лайка.

Задача А:

Полное решение:

Дается число n, нужно узнать мин кол-во кусочков, которое наш гг съест. Заметим, что мы всегда можем делать что-то по типу: 1 1 n-2, пока (n-2>=3). Из этого можно вывести формулу: floor((n-1)/2)

Сложность: O(1)

P/S: Вы конечно можете попробовать симуляцией, но боюсь по времени это не займет.

Задача В:

Полное решение:

Давайте рассмотрим решение-симуляцию. Какой для нас худший случай? Это когда все буквы в строке равны ‘A’. В таком случае у нас будет что то вроде O(1e9*n*q), что ясно не зайдет. Вместо этого для этого случая мы можем вывести формулу: floor(N/len(s))+(N%len(s)). Иначе можем просто просимулировать, потому если в строке есть хотя бы одна ‘B’, то симуляция займет log2(x) в худшем случае.

Сложность: O(n*log2(x)), на запрос.

Задача С:

Полное решение:

Оптимально сперва рассмотреть операцию “Разделить”, т.к она бесконечна. В каком случае x, подойдет для нашего y, в качестве данной операции? Мы можем сделать что-то вроде n, x’ x’+(n%x) x’*2, однако данная стратегия не зайдет для чисел <=x*4. Поэтому предположим, что любое число, что больше или равно нашему x*4, мы сможем разделить. Теперь осталось лишь найти кол-во чисел <x*4, не считая чисел которые уже нам подходят. Так делаем для каждого x, от 1 до n.

Выведем максимальный ответ, как максимум из всех возможных вариантов.

Сложность: O(n) или O(nlogn) в зависимости от имплементации.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
ru5 Russian Goddless 2025-10-24 19:36:40 3 (опубликовано)
ru4 Russian Goddless 2025-10-24 19:30:52 8112
ru3 Russian Goddless 2025-10-24 19:29:22 303
ru2 Russian Goddless 2025-10-24 19:27:14 191
ru1 Russian Goddless 2025-10-24 19:24:40 1686 Первая редакция (сохранено в черновиках)