Мы планируем во время сборов провести разбор задач и сделать онлайн трансляцию, чтобы вы имели возможность задавать вопросы автору контеста. Скорее всего это будет в понедельник. Хотелось бы поинтересоваться, какое время будет наиболее удобно для большинства? Сейчас рассматриваются варианты в 16:30 (раньше нельзя из-за лекции) и в 18:00.
Ссылка на разбор: edgetv.ru/edgetv/ Начало в 16:30
А завтра ПТЗшный контест будет?
Нет, из птз контестов не будет ни одного ГП
Это круто, спасибо.
fuck yeah!
И как, вроде бы, говорили, планируется что в принципе не будет ГП, когда его онсайт сильно раньше, чем сам ГП
мудачный контест
как решалась J?
Считаем за 9 запросов, сколько каких букв в первых 6 симолах, вторых 6 и в третьих.
Генерируем подходящие строки, поддерживаем множество подходящих.
Выводим рандомную, пока не скажут "да"
так там же ограничение на количество строк — 15, как так получается, что за 6 оставшихся запросов находится ответ?
Видимо нашелся)
ЩИТО???????
там же очень много строк подходит!! как оно зашло!!!
Наш сабмит в последние минуты почему-то заТЛился, но стресстест (с ограничением 15) прекрасно проходит. Будем делать сделующее: на каждом шагу генерить много рандомных строк и выбирать ту, которая даёт нам больше всего информации (просто посчитаем энтропию). Для первых 4х шагов информацию можно считать (3,4,5,6)-мерной динамикой, а дальше сгенерить множество потенциальных кандидатов — их уже мало — и считать втупую. Стресстест отлично работает, константы подогнали так, чтобы работало за секунду; видимо, это превращается в >4 секунд на java тестирующего сервера :(
Мне хватило просто вывести 14 полностью рандомных строк и перебором найти ответ, подходящий под полученную информацию.
Еще зашедшее решение:
Генерация 14 строк(случайных). Подбираем строку которая подходит.
можете подробнее и код?
Кода нету(писала не наша команда)
Зашло, насколько я понял, при m = 11 и m = 14
Подробнее: генерируется m рандомных строк (Скорее всего, таких, что у них нет одинаковых соседних), запоминаются для них ответы. Потом генерируются все строки, которые подходят (тупо, за 3^18, но с отсечениями типа если совпало слишком много или слишком мало). Оставшиеся 15 — m раз Выводится случайная, проверяются какие до сих пор подходят
не очень могу понять, почему какие-то рандомные магии заходят...
Почему такая магия могла зайти — понятно. m рандомных подстрок дают более чем достаточно информации, другое дело, что результаты сильно скореллированы. Но если кому-то влом оценивать корреляцию, и не жалко времени за компом, — может попробовать это запихать. Хотя мне кажется, что простой рандом можно почелленджить (но я не уверен). Интересно было бы узнать, как авторы генерили тесты, и что умеют доказывать про рандом.
Тематические контесты — это конечно круто, но какой извращенец придумал это на OpenCup давать? :) Хотя бы предупредили, что контест будет тематическим (предупрежение "некоторые из задач будут интерактивными" не считается, это не то же самое, что "все задачи будут на загон всякой фигни с k попыток").
Мы предлагаем новый формат контеста opencup! Все задачи "сгенерировать output без input", ограничения меняются случайным образом раз в полчаса.
А мне кажется, нормально. Форсированное внедрение формата получается. Конечно, авторы словят много любви от благодарного сообщества, но стратегически это было хорошо.
а мне кажется, вы один из соавторов (автор) контеста.
Я принимал участие в подготовке почти всех условий. Не знаю, как это у вас соотносится с авторством. В принципе отношение "кажется" подходит.
Я не знаю про остальных участников, но я всегда был полон любви и благодарности авторам за задачи, в которых надо придумать и затолкать шаманизм или хотя бы можно придумать и затолкать шаманизм. Например, почти очевидно, что в J хотя бы один из тестов наше решение просто угадало (т.е. выбрало из более одного варианта последней попыткой).
Мне кажется исторически сложившимся следующее правило: в рамках ограничений задачи жюри делает все возможное, чтобы решение, не проходящее хотя бы один тест из множества допустимых, не прошло.
Внимание, вопросы авторам:
1) Верно ли, что в задаче D при любой возможности выиграть робот выигрывал? Очень интересно увидеть оптимальную стратегию за робота в выигранной им позиции.
2) В какой ситуации робот в задаче D сдавался? В частности, пытался ли он ходить назад и вперед бесконечно долго, если условие сдачи — отделенность от границы?
3) Верно ли, что в задаче J тест выглядел как "загаданная строка" и не проверялось, что другая строка дает те же ответы на все заданные вопросы? Аналогично в задаче Е.
4) если в некоторых задачах (AEJ...) тест загадан заранее и не зависит от действий программы, почему это не было указано в условии явно?
5) (буквоедство) каким образом было в задаче С реализовано "случайно и равновероятно на отрезке [0.7;1]", если известно, что с вероятностью 1 загаданное число иррационально?
А какое шаманство можно было толкать в D? Просто интересно.
Я умею выигрывать на поле 11*11 за программу, но решение достаточно сложное, и кодить его очень долго. Вкратце — идея ограничивать (в центрированных) |x| + |y| = 4 и строить этюдный вариант в особенном случае, когда робот достаточно неудачно на этот квадрат выходит. Если сделать квадрат больше, то можно написать в общем-то некорректное решение, которое просто игнорирует возможность робота "неудачно подойти".
К сожалению, такое можно писать только в конце контеста, а вердикты последнего получаса вообще пришли после контеста, поэтому делали другую задачу, по которой, как оказалось, был уже OK.
Выигрывать в 11*11 — это сильно. Мы сразу придумали честное решение для большого квадрата, мне просто интересно, какой может быть некорректная стратегия, проходящая более-менее нетривиальные тесты.
Кстати, по поводу 2) — т.к. каждый ход игрок сжигает по клетке, то клетки рано или поздно закончатся и у робота не останется допустимых ходов.
Ход уже в сожженную клетку разрешен.
В условии же сказано, что нельзя сжигать клетку дважды?
Что же тогда вообще запрещено роботу? Как тогда понимать условие: «Robot can not fly or teleport, he moves around the field, so he can not go through burned cells»?
Вот не знаю, правильное ли это решение, но мы строили диагональную рамку (просто "соединяли" клетки (0; 40), (40; 0), (80, 40) и (40; 80)) и жгли ближайшую по бфс'у клетку из неё (бфс запускали на 15 ходов). Когда сожгли всю рамку — жгли клетки, в которых робот был на предыдущем ходу.
Это получило ОК.
Тут надо как-то доказать, что робот за эту самую рамку не успеет зайти. Ну, или опровергнуть. Мы это не сделали.
Есть довольно простое решение: За первые 8 действий выжигаем клетки (0, 1), (1, 0), (0, 79) и подобные (соседние с угловыми). Очевидно, что мы успеваем (если робот идет в одну сторону, надо на 1 ход прерваться, помешав ему).
Теперь достаточно делать так — если робот на соседней с границей клетке — выжигаем ближайшую клетку границы. Иначе — клетку границы, на которую он сейчас "смотрит". Если выжжено — берем любую другую. Пишется легко и несложно показать, почему это работает.
Мы сдали в точности то же самое, мне интересны именно шаманства :)
Вроде как достаточно сжечь 4 клетки (1, 1), (1, 79), (79, 1), (79, 79). По идее, в таком случае его движение можно даже не прерывать. А дальше то же самое.
Там вроде только 7 действий можно так делать, потом надо на один ход затормозить робота, чтоб его следующий ход стал 1, заблочить 8 клетку, и тогда уже вин.
Если хотелось форсированного внедрения формата — надо было дать нормальный контест, а не 10 задач вида "а угадайте-ка ещё вот такой вот объект за k попыток". Сколько всего разумного и гораздо более приятного можно делать интерактивным — да те же онлайн структуры данных, что гораздо более интересно и близко с СП. А делать то что было — не круто, учитывая, что 90% сданных решений — шаманизм (неужели жюри умеет для всех своих решений честно доказывать, что они всегда работают правильно?), и тесты очень слабые (интеракторы даже не пробовали челленджить решения участников).
Просто не те условия в систему залили. Бывает, чо
ага
В смысле — не те условия? Там и сейчас 15 написано.
да нет, уже исправили
Эм... По ссылке http://acm.math.spbu.ru:17249/~ejudge/files/opencup/oc12/gp1/interact-e.pdf — 15. Или я что-то в этой жизни не понимаю?
В див-2 на протяжении примерно 40 минут от начала контеста были условия от див-1
Хех, мы это запалили (нам поведал координатор) только через 2 часа после начала
А мы так и решали div 1 =/
Самое печальное, что мы решили задачу A с условием для первого дива, a больше нифига и не сдали :(
Я думаю, это, наоборот, круто.
Что именно? По моему было бы круче, если бы мы сдали не только задачу А :)
О_о? Где ты взял 40? Для 40 полный кэп
да ты просто бог рандома — за 15 действий-то найти ответ, ага
Рандом — это очень весело.
Мы написали какую-то хрень по А (а именно — за ~36 действий узнаем для каждой буквы количество ее вхождений, а потом будем в лоб перебирать первую букву, вторую, третью и тд) и вставили пару рандом_шафлов. Итого — +49.
Как, кстати, А решается?
Будем поддерживать шаблон вида с1 * с2 * ck, вставлять в промежутки новые буквы. Вставляем сначала все a, потом все b, ... в конце — все z. После этого выкидываем промежутки и выводим ответ. Промежуток для вставки очередной буквы ищем бинпоиском, вставляем в самый левый промежуток, в который можно (если без бинпоиска — получается 80 действий, бинпоиск спасает).
Если добавлять буквы в случайном порядке и в случайном же порядке перебирать интервал, куда мы эти буквы пихаем, то можно обойтись и без бинпоиска.
Совсем простое решение. Узнаем за 26 действий какие буквы входят. Теперь будем строить — перебираем из пула еще доступных букв очередную. Нам понадобится (кол-во оставшихся букв — 1). Теперь если кол-во оставшихся букв + 10 — кол-во уже найденных букв > 10, то текущая буква точно больше не встретится, иначе проверяем answer + * + буква + * — входит ли данная буква дальше. Таким образом все будет сделано за 26 + 9 * 10 / 2 + 1 операцию
26 — проверка вхождения букв.
xx — подсчет кол-ва вхождений каждой буквы
45 — генерируем строку, добавляя оставшиеся буквы. Буквы проверяем в порядке уменьшения количества их вхождений в оставшейся части.
1 — вывод ответа.
xx — бинпоиск. Левая граница у входящих = 1, у невходящих = 0. Правая граница = 11 — sum(левая граница других букв).
Зашло с первого раза без шаманства. Не уверен, учитывается ли вывод за попытку. Так как количество запросов на бинпоиск и генерацию ответа связаны, решение как-то укладываеся в 75 запросов.
мы считали количество вхождений без бинпоиска, там получится что-то около 26+10+5+3+2+2+1+1+1+1. Дальше, если какие-то буквы встречаются больше 2-х раз, рассматривали только первую и последнюю. Любые буквы такого вида можно сравнивать за один запрос, поэтому их порядок находится сортировкой. Остальные буквы по одной вставляли в имеющуюся строку.
хотел узнать, за что общество плюсует этот коммент, многие ведь вы же даже не видели, что там было написано?
"Ошибка проверяющей системы" Что это значит? В таблицу результатов попытки не занеслись.
проблема решена
Забавно, что многие участники кубка пишут по скайпу. Поэтому можно после контеста всем вместе созваниваться и устраивать разбор :)
Поздравляю с успешным выступлением!
Хотелось бы задать тупой вопрос... Если мы посеяли логин и пароль, как их восстановить?
Наверное, обратиться к координатору вашего сектора.
Когда будет открыто дорешивание?
"только после финализации результатов проверки" — так написано на opencup.ru
А что значит столбец SE в таблице результатов(последний)?
Чем он больше, тем менее решаемые задачи ты решил.
Эх, если бы мы успели доделать F...
Хочу искренне поблагодарить авторов за смелую идею проведения такого контеста. Лично мне контест очень понравился. Очень интересные задачи, требующие непривычных подходов. "Немного подумать" избавляет от необходимости "много шаманить". Жалко, просто не успели добраться до большей части задач. Интерактивные задачи сложнее тестировать локально, поэтому приходилось либо сабмитить без тестирования, набирая кучу минусов, либо писать вспомогательный код для тестирования, что отнимало время.
Хотя проблемы в подготовке имели место быть. "Ошибки проверяющей системы" (на этом тоже кучу времени потеряли), постоянные сообщения и апдейты условий, неясности и неточности в них, по-видимому, еще остались. У людей проходило палево, это вообще в интерактивных задачах бывает сложно отсекать. Это не просто ваш локальный контест, а этап Открытого Кубка. К подготовке надо более тщательно относиться.
Кроме того, объективный факт — чем больше контест перегроблен, тем больше его ругают. Потому что в большинстве своем люди чувствуют неудовлетворенность от контеста, если решили на нем меньше половины задач. И они прыгают от счастья, когда сдают 8-10 халяв, даже если при этом до сложных задач вообще не добираются.
как-то вы слишком категоричны, собственно, чем хороши перегробленные контесты, почему бы их не ругать?
Тем, что на них много интересных задач. ;)
Я писал этот контест вне конкурса, изложу свои впечатления (следует сразу предупредить, что я нарвался на CF/RTE 1 во всех задачах, которые сдал, так что могу быть не объективен):
Мне кажется, что интерактив хорош в виде одной задаче в обычном сете. Интерактив требует написания довольно серьезной инфраструктуры (интерактора). Возможно, неплохой идеей было бы предоставление бинарника с какой-то версией интерактора (не обязательно оптимально "играющего")
Надо представлять силу решающих команд. Контест, который отлично подходит для онсайта кубка, скажем, будет плох для отдельного этапа и наоборот. Когда только 1/6 участников решает более двух задач — это очень демотивирует. Я прекрасно помню, как мы на первом/втором курсе писали четвертьфинал/чемпионат Москвы — отбивало всякое желание продолжать этим заниматься
Задачи были какие-то слишком одинаковые. Интерактивные задачи предоставляют куда больший простор для выбора тем — а тут было несколько однотипных задач
Планируется ли реализация движка interact-ора в плагине?
Вообще планируется, но пока тупо непонятно как. Если установится какой-то общепринятый (среди контестов, где можно пользоваться плагином) формат выкладывания интерактора — это будет одно. Либо нужно писать свой формат + простой способ переключиться в режим без интерактора (если его влом писать)
Вот расскажите кто-нибудь, пожалуйста, как можно тестировать интерактивные задачки? Мне сегодня посчастливилось писать две, и в обеих несмотря на то, что я написал жалкое подобие интерактора, который, на самом деле, не интерактор, а просто самописный метод, с помощью которого программа обменивается данными с интерактером (то есть выглядит так
int Get() {
ifdef DBG
...
return ...
endif
string str;
cin >> str;
return str;
} )
я получил по +миллиард попыток просто из-за того, что что-то не так было с форматом вывода и это было очень сложно найти.
Неужели кто-то пишет честный интерактор с межпроцессным взаимодействием?
я писал в главной программе
а в интеракторе
только потом обмениваться данными приходится странными способами
под windows такого не нашел, но когда есть счастье решать из под unix, то очень рекомендую использовать именованные каналы
Спасибо, в unix я тоже умел это делать.
Кстати, странно, что ты не нашел под windows, в первой ссылке на википедии есть раздел, в котором что-то написано про то, как это устроено в windows :)
правильней было сказать не "не нашел", а "особо не искал"... посмотрел что не все так просто и отложил))
Написано-то написано, только вот аналога утилиты
mkfifo
что-то не видно… В таком свете способ nk.karpov выше выглядит довольно привлекательно: пишется легко и быстро, решение можно посылать без изменений.Под Windows можно сделать Pipe и подставлять в параметры запуска программы. Примерно так:
После этого interactor может работать с hIn/hOut.
Я правильно понимаю, что зарегистрироваться на edgetv.ru обязательно для просмотра разбора? Просто отчаянно не хочется принимать пользовательское соглашение в виде страницы 404, на которую в данный момент указывает edgetv.ru/license.
Трансляция начнется через пару минут. Регистрация для просмотра не обязательна.
Кто-нибудь знает как делать B? Как я решаю: Каждой ячейке ставится в соответствие переменная. Делаем 1000 случайных циклических сдвигов. После каждого сдвига в систему добавляется новое уравнение. Потом решем систему. Добираемся до всех пустых клеток при помощи сдвигов и одного смещения. В Див2 это решение проходит. В Див1 программа проверяется несколько минут и выдаёт ТЛ1.
P.S. Любая программа выполняетя несколько минут и выдаёт TL1. Видимо, пока её сдать невозможно.
Можно где-нибудь посмотреть оффлайн вариант разбора или текстовый вариант разбора? Заранее спасибо.