24 и 25 мая 2014 года состоится «Московский фестиваль спортивного программирования VIII Кубка им. И.Н. Векуа», проводимый совместно Московским государственным университетом им.М.В.Ломоносова и Московским физико-техническим институтом (государственным университетом) на базе московского учебного центра МФТИ.
В рамках Московского фестиваля по спортивному программированию пройдет очный тур Международной олимпиады по программированию на Кубок И.Н. Векуа.
Олимпиада будет проходить одновременно на 5 площадках: в Тбилиси, в Москве, в Новосибирске, в Виннице и в Санкт-Петербурге. На главной площадке чемпионата в Тбилиси соберутся команды со всего постсоветского пространства, вышедшие в финал Международного чемпионата ACM ICPC по спортивному программированию.
«Московский фестиваль спортивного программирования VIII Кубка им. И.Н. Векуа» является уникальнейшей возможностью принять участие в престижной Международной олимпиаде "у себя дома" и, благодаря прямой трансляции, стать очевидцем основных событий чемпионата в Тбилиси.
Московский фестиваль спортивного программирования пройдет в 2 тура:
- 1 тур — командный зачет на VIII Кубок им. И.Н. Векуа;
- 2 тур — шестой личный чемпионат "MIPT open".
После чемпионата пройдет награждение участников. Церемония награждения победителей личного и командного контестов будет проводиться по итогам результатов «Московского фестиваля спортивного программирования VIII Кубка им. И.Н. Векуа» на площадке города Москвы.
«Московский фестиваль спортивного программирования VIII Кубка им. И.Н. Векуа» ставит перед собой цель собрать команды для очного поединка, команды-резерв для состязания с лучшими командами мировой программистской элиты.
Фестиваль пройдет в Московском корпусе МФТИ (г. Москва, Дмитровское шоссе, д.9, Учебный центр МФТИ).
Участие бесплатное, регистрация на сайте открыта до 23 мая 2014г.
ВНИМАНИЕ! Регистрация отдельная на каждый тур!
Подробную информацию вы можете получить в Центре развития ИТ-образования МФТИ по тел. +7-495-408-56-18, e-mail: [email protected].
Не понятно из текста. К участию допускаются все команды или только финалисты?
К участию допускаются все студенческие команды. Более того, если на площадке выразит желание участвовать команда ветеранов, она тоже будет соревноваться в зачёт Кубка Векуа (в соответствии с правилами Кубка).
Обращаю внимание на то, что, так как итоги XIV Открытого Кубка им. Е.В. Панкратьева по программированию уже подведены, площадки в рамках секторов OpenCup закрыты. Тем самым участие московских команд в зачёт Кубка Векуа из секторов не допускается, равно как и заочное участие, и площадка в рамках Фестиваля является единственной официальной площадкой VIII Кубка Векуа в Москве.
Правила проведения личного чемпионата Москвы по спортивному программированию MIPT Open будут опубликованы в ближайшее время на техническом сайте соревнований, который будет открыт на платформе SnarkNews. Пока что рассматривается выбор из обычного ACM и системы TCM/Time. Результаты личного чемпионата Москвы также пойдут в зачёт личного тура VIII Кубка Векуа наряду с результатами участников, которые будут принимать участие из Тбилиси.
Где можно узнать информацию о площадке в Санкт-Петербурге?
Онлайн-зеркало будет?
Или хотя бы тренировки на СF потом.
У Вас есть логин OpenCup? Совершенно точно будет тренировка на сервере OpenCup. Насчёт онлайн-зеркала не уверен.
А чем обсусловенно такое странное раписание? То есть у многих студентов сейчас сессия надвигается, важные пары в субботу, а командный контест именно в этот день.
Видимо онсайтом в Тбилиси
Ну онсайт тоже мог бы в воскресенье быть :(
Будет ли на OpenCup трансляция личного турнира в воскресенье?
Как минимум предполагается; возможно, что с каким-то сдвигом. Детали будут объявлены в субботу.
Ну так что?
Как доказать решение n % 2? Alice:Bob в задаче A? Как нормально реализовывать I и с какой асимптотикой?
Если n четно, у второго игрока есть симметричная стратегия: повторять ходы симметрично относительно центра. Если нечетно, первый игрок ходит в центр и такая же симметричная стратегия.
А где в четной штуке центр?
Еще такой вопрос — это только у нас борд не обновлялся, пока не посабмитили?
В точке, которая является общим углом для четырех центральных клеток.
Например, для n = 4 на такой ход:
надо отвечать так:
Ой, протупил. Спасибо.
Мы в I сдали O(10 × T × N × M). Находим самый верхний левый включенный пиксель и перебираем цифру, которую пытаемся поставить туда, теперь повторяем это, но уже с выключенными пикселями. Самое сложное — захардкодить циферки.
А как решалась задача Е? Можно ли её решить за один запуск FFT на тест?
Мы без FFT, но с Фенвиком. Восстанавливаем ответ по битам. Пусть мы хотим восстановить бит 2k - 1, где . Тогда начнём идти слева направо и подсчитывать текущую сумму на префиксе по модулю 2k. Чтобы сумма на каком-то отрезке получила единицу в нужном бите, нужно, чтобы она была больше или равна 2k - 1 (по модулю). Теперь после добавления очередного элемента нужно всего лишь посчитать количество сумм на префиксах в каком-то зацикленном отрезке, что делается запросами к дереву Фенвика. Итого с очень хорошей константой и линейной памятью.
Говорят, FFT получало ТЛ.
Мы сдали такое решение: сумма на отрезке [i;j] — sj - si - 1, где s — массив префикс-сумм. Будем решать задачу по каждому биту отдельно, проверять, присутствует ли он в ксор-сумме ответа. Для каждого значения sj нужно посчитать, сколько есть подходящих i ≤ j. Для этого можно использовать бор: если мы проверяем бит k, то будем добавлять в него младшие k - 1 бит каждого числа sj, и посчитаем для всех вершин в боре v динамику cnt[v][0|1] — число листьев в поддереве v таких, что k-й с конца бит соответственно равен 0|1. Зная эту величину, можно посчитать число подходящих индексов i, спускаясь по дереву — нужно разобрать несколько случаев. В конце получается что-то вроде такого: если сейчас k-й бит равен x, и спускаемся по ребру, на котором написано y, нужно добавить cnt[v->!y (противоположное ребро)][x ^ y]. Итого — O(nlog2n).
Я писал FFT(2 запуска на тест), и это аксепт. А как за один? З.Ы. Была похожая задача, только там нужно было посчитать
Unable to parse markup [type=CF_TEX]
, а здесь этоUnable to parse markup [type=CF_TEX]
. Решается кстати за O(maxi{si}).А как за два?
Как обычное умножение векторов, кодга можно посчитать fft от двух векторов вещественных чисел за один запуск.
. И по
востанавливаем образы $fx, fy$.
Как С(геом) решать?
Классно, спасибо. С "шапками" прикольная идея.
Как решать задачу про минимизацию BOB?
Стандартная динамика. Состояние — мы уже восстановили какой-то префикс s, при этом максимальный суффикс, совпадающий с каким-то префиксом
BOB
имеет длину k (да, как в КМП).После этого делаем один или два перехода, соответствующие буквам.
Чтобы посчитать динамику один раз и быстро отвечать на запросы, состояние делаем с правильной стороны: уже поставили x букв одного типа и находимся в позиции pos. Количество поставленных букв другого типа автоматически восстанавливается. Чтобы ответить на запрос, нужно взять лучший из ответов для pos = |S| и n - X ≤ x ≤ X, что делается Фенвиком.
Не совсем понятно. За сколько это работает?
"уже поставили x букв одного типа и находимся в позиции pos". Это квадрат состояний, или я что-то не понял? Квадрат (при n = 1000) состояний и на тысячу тестов выглядит довольно шатко для двух секунд.
Да, это квадрат состояний и квадрат же переходов, всё верно.
Прекрасно работает, у нас же сумма длин строк не более 105 (или что-то похожее, сильно меньше миллиона). Поэтому суммарное время работы можно оценить как суммарную длину, умноженную на максимальную длину одной строки, итого 108.
Если я правильно помню, в условии было только ограничение на суммарное Q (число запросов) по всем тестам, но не на сумму длин строк.
Упс, правильно помните.
Ну что могу сказать, зачёт по чтению мыслей в очередной раз сдан. Видимо, один из тех случаев, где мультитест надо понимать творчески: "ну не будет же там тысячи макстестов".
Примерно из таких соображений решили сдать, когда ничего не придумали:\
Как решать Б(личная) быстрее, чем за 3^n? Или это пихается все-таки?
Да, мне тоже интересно. Я почему-то думаю, что все сдали перебор, поправьте меня "все", если я не прав. =)
Отсортируем рюкзаки по убыванию веса. Очевидно, что надо использовать несколько самых больших. Будем заполнять сначала самый большой рюкзак, потом следующий и так далее. Динамика для подмножества: количество рюкзаков, которые придется заполнить, и вес, использованный в следующем (минимизируем первое, при равенстве второе). O(n2n)
Признаю, был не прав, красивое решение:)
Как доказать в H для множества у которых bonus < damage, что битвы в порядке уменьшения бонусов это верное решение?
Есть ли дорешивание?
Да, может быть, есть какой-то шанс, что контесты будут добавлены здесь в тренировки?
Кто-нибудь умеет решать F (личный тур)? Много раз видел похожие задачи, ни разу не разобрался. Может есть какие-то идеи, похожие на решение.
Еще вопрос на засыпку. Я написал такое решение, шел сканлайном слева-направо и если замечал, что что-то можно помержить мержил. При этом перед каждый преобразованием я поворачивал все на 90 градусов. Долго думал над тестом, так и не придумал, получил TL9, отсюда сделал вывод, что такой тест существует. Может кто-то знает, как он выглядит?
Как решать E(личная)?
Перейдем от количества в коробках к количествам в префиксе, тогда определить в i коробке будет Si -S(i-1). Префиксов n+1 штука(включая нулевой), даны ребра — веса для перехода. Построить граф, найти на нем остовное дерево.
Задачи где-нибудь можно найти? И будет ли какая нибудь дорешка или где нибудь материалы найти можно?