| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | Benq | 3792 |
| 2 | VivaciousAubergine | 3647 |
| 3 | Kevin114514 | 3611 |
| 4 | jiangly | 3583 |
| 5 | strapple | 3515 |
| 6 | tourist | 3470 |
| 7 | Radewoosh | 3415 |
| 8 | Um_nik | 3376 |
| 9 | maroonrk | 3361 |
| 10 | XVIII | 3345 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 162 |
| 2 | adamant | 148 |
| 3 | Um_nik | 146 |
| 4 | Dominater069 | 143 |
| 5 | errorgorn | 141 |
| 6 | cry | 138 |
| 7 | Proof_by_QED | 136 |
| 8 | YuukiS | 135 |
| 9 | chromate00 | 134 |
| 10 | soullless | 133 |
| Название |
|---|



Ребят, в арену не заходит :(
Пишет "Error, system is offline".
У меня только что зашло.
Как решать 500(div1)?
Заметим, что пары строк, которые нас интересуют — это такие строки, что одна из них получается циклическим сдвигом из второй. Давайте считать, сколько в алфавите из k букв есть строк длины N с количеством различных циклических сдвигов равных L. Это равносильно тому, что нам нужно посчитать, у скольки строк период равен L. Значит, L — делитель N. Для того, чтобы посчитать количество строк с периодом L, используем что-то вроде принципа включений-исключений:
f(L) = kL-(сумма f(c) таких, что с — делитель L и с меньше L)
Чтобы узнать ответ, суммируем для каждого делителя N значение f(L) * L (для каждой строки ставим в пару ее циклический сдвиг)
а ещё на прямую по принципу включений-исключений
Как решать 950 (div. 2) ?
1000 в див1, верно ли что достаточно завести вектора количества вхождений каждного элемента, и затем их перемножить и найти в какой позиции самое большое число?
Нет конечно. Верно то же удтверждение, если бы произведение 2х чисел было операцией минимума
Как тогда решать? :)
static final int BUBEN = 10;
Объяснять дальше? :-)
У меня в дорешке n * sqrt(n) * log(n) тлешится, чуть-чуть не пролазит в 4 сек на двух тестах. А те кто сдали, с какой ассимптотикой это сделали?
Ну если я понимаю правильно, то решение у Егора такое:
Сначала возьмем каждого числа по одному, и с помощью Фурье (когда чисел по одному, мое утверждение выше с произведением и ответ Егора с минимумом -- это по существу одно и тоже) найдем все их попарные суммы. Затем уменьшим количество вхождений каждого числа на один. Повторим это 10 раз. Остались только числа, которые встречаются по 11 раз и более, их, очевидно, не более 10К, их попарные суммы находятся за квадрат.
Получается 10*n log n + 10K^2.
У меня n^2 в дорешке прошёл...
Можно ли решить 250(div1) через ДП по дереву?
Понятно, что одним ходом можно закончить игру, оставив какой-нибудь лист. Тогда рассмотрим логику первого игрока. Он может всегда взять какой-нибудь лист. Ответ — это вес самого тяжелого листа. Предположим, что первый игрок может взять больше, чем самый тяжелый лист. Тогда он первых ходом не закончить игру, а отрежет кусок дерева. Понятно, что одним разрезом удалить все начальные листья нельзя. Тогда второй игрок своим ходом закончит игру, так как тогда результат будет не больше, чем наибольший лист, а первый игрок хочет больше. Таким образом лучшая стратегия — это первым же ходом отрезать наибольший лист.
Я сдавал такое же решение.
Но интересно можно ли было решить эту задачу именно динамикой по дереву. Вариант перебрать ребро и разбить на 2 подзадачи не срабатывает в данном случае.
Editorial