22 июня в 11.00 по Московскому времени состоится Открытое личное первенство УрФУ 2013.
Соревнование будет проводится на тимусе — ссылка на контест. Посмотреть время начала в вашем часовом поясе можно здесь.
Предлагаю после контеста обсудить здесь задачи.
P.S 8к гет удался!
UPD: До начала контеста осталось всего несколько часов!
В чем можно накосячить в задаче H? У меня стабильно WA 5, так и не смог затестить.
Уже раза два попдались задачи похожие на B, понятно, что можно разобрать людей по группам, которые хотят сидеть рядом, проверить могут ли они вообще сидеть как хотят и посчитать факториалы. Но как ее решать попроще?
В данном решении нужен один дфс для каждой компоненты связности, а также посчитанные "влоб" факториал и степень двойки по модулю. Как же вы тогда себе представляете более простое решение?
Понятно, спасибо. Представлял использование крутых комбинаторных формул.
Решившие задачу Е, какой алгоритм вы придумали? Если выбирать одну из наибольших возрастающих (убывающих) последовательностей, а пытаться остальные элементы добавить во вторую, то легко построить контрпример.
5 1 2 6 4 7 8 3
5 1 2 6 4 7 8 3
Первая последовательность не даёт возможности построить ответ, а вторая — даёт.
Я делал аналогично, только брал наибольшую возрастающую/убывающую последовательности, заканчивающиеся на последнем элементе массива. И мое решение выдает неверный ответ на ваш тест(
Тогда добавим в начало условный 0, а в конец 9. Получим:
0 5 1 2 6 4 7 8 3 9
UPD: я так и не понял из Вашего поста, кто кого валит, поэтому решил развить мысль с контрпримером.
Извиняюсь за непонятное написание) Мое решение выдает "Fail" на вашем тесте.
Случай, когда обе подпоследовательности растут одинаково решается простым жадником.
Для случая разного роста решающим является следующее наблюдение. Рассмотрим, где в перестановке находится 1. Ясно, что она либо начало возрастающей подпоследовательности и тогда всё до нее должно убывать и быть началом убывающей подпоследовательности, либо она конец убывающей подпоследовательности и тогда всё после неё должно возрастать и быть концом возрастающей. Если выполнены оба эти условия, то построение очевидно: префикс до 1 — убывающий, суффикс, начиная с 1, — возрастающий. Иначе выполнен один из случаев и мы однозначно восстанавливаем какие-то куски наших подпоследовательностей и переходим либо к префиксу, либо к суффиксу перестановки.
Теперь на каждом шаге мы находимся на некотором отрезке перестановке, и каждая из последовательностей частично заполнено с начала и конца, мы рассматриваем минимум на отрезке и делаем похожий анализ как выше и либо завершаем построение, либо частично достраиваем и переходим к меньшему подотрезку.
Там, конечно, нужно аккуратно все закодить, но в итоге получается довольно простое линейное решение (дерево отрезков для минимума не нужно, для проверки на убывание и возрастание префиксов и суффиксов делается простая линейная ДП-шка).
Для возрастающей и убывающей последовательности можно придумать ДП. dp1[i] — минимальный конец возрастающей подпоследовательности в префиксе до i — го элемента при условии, что i — й элемент попал в убывающую, и dp2[i] — максимальный конец убывающей подпоследовательности в том же префиксе при условии, что i — й элемент попал в возрастающую. Пересчитывается за O(1).
Look what I have written 10 months ago :) (4000*2 = 8000) ?