Закончился второй раунд. Интересно, как решать C, F?
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
Закончился второй раунд. Интересно, как решать C, F?
Название |
---|
Интересно я один пытался запихивать хеши на B ?
Расскажите пожалуйста нормальное решение)
У меня зашло решение в лоб: для каждой клетки-центра креста расширяемся, пока можно, и обновляем ответ.
Обидно)
Я писал бинпоиск + хеши, думал еще как-то Манакера использовать)
Спасибо)
Я успел только прочитать эту задачу, но мне кажется, что можно использовать идею выше, только сравнивать за раз сразу по 32 клетки с помощью преобразований масок в инты. А при неравенстве уже влоб проходить. Итого должно получаться O(N^2 * (N / 32 + 32))
А почему "запихивать"? Оно там вполне нормально заходит, без каких-либо проблем. Памяти на все хватает, по времени — у меня 0.684, запас х10.
Антихештестов тоже нету :)
Upd. Код.
значит я криворукий)
Все время ВА получал
Спасибо:)
Переписал и зашло)
С обходом антихеш тестов у меня 2.9, при этом на случайном макстесте на сервере (в задаче Х) 5 с
F: Для начала посчитаем, какое количество монет может быть перевернуто после выполнения всех действий. Заметим, что если после выполнения некоторых действий может быть перевернуто минимально min и максимально max монет, то может быть перевернуто и произвольное количество монет cnt, такое что min ≤ cnt ≤ max и cnt совпадает по четности с min и max (они всегда совпадают по четности между собой). Поэтому будем просто выполнять последовательно действия и считать эти min и max после каждого действия, зная каковы они были перед выполнением действия. Внутри перехода min и max я считал разбором нескольких случаев, примерно так:
В конце мы знаем, какое количество монет может быть перевернуто, для каждого такого количества cnt прибавляем к ответу число сочетаний из N по cnt.
Полный код (метод solve в самом конце)
А код для to во избежание багов можно не писать, а вызвать код для from с (from, to) --> (m — to, m — from), и взяв m — результат.
Да, вчера вечером я тоже это придумал, но на контесте ограничился "скопировать, просмотреть ошибку, получить WA вслепую" за минуту до конца раунда.