Мы открываем Алгоритм-2016 — чемпионат Яндекса по программированию с оригинальными правилами, подарками и денежными призами для лучших участников. 512 лучших участников отборочного этапа получат футболки с символикой конкурса.
Если вы чувствуете в себе силы побороться с опытными программистами за призовой фонд в 540 тысяч рублей, ещё не поздно зарегистрироваться и показать, на что способны. Регистрация открыта до конца квалификационного раунда.
10 мая в 21:00 по московскому времени (UTC+3) пройдёт разминочный раунд, а весь день 21 и 22 мая можно будет поучаствовать в квалификационном. Все, кто решит в них хотя бы одну задачу, перейдут в отборочный этап, в трёх раундах которого определятся 25 финалистов. Финал пройдёт 28 июля в Минске.
Подробная информация о сроках проведения доступна в правилах чемпионата. Полное расписание чемпионата доступно по ссылке.
Ожидая начала чемпионата, можно посмотреть на то, как проходил чемпионат в 2015 году.
Желаем удачи!
UPDATE 01. Разминочный раунд состоится уже сегодня в 21:00 (UTC+3). Вы можете квалифицироваться в отборочные раунды, решив хотя бы одну задачу сегодня.
UPDATE 02. Опубликован разбор задач разминочного раунда.
В правилах написано, что 512 лучших получат футболки. В прошлом году, на 500-ом месте был человек получивший 0 баллов, и решивший 0 задач
В этом году мы постараемся сделать так, чтобы у ТОП-512 точно были решенные задачи в отборочных раундах.
Я прошу прощения за любопытство, но меня всё это время интересует, как всё же были распределены футболки в прошлом году?
Для получения футболки необходимо попасть в ТОП-512 отборочного раунда, решив хотя бы одну задачу в отборочных раундах. Так что в прошлом году, к сожалению, количество обладателей футболок было меньше, чем могло бы быть.
Футболку Яндекса было получить проще всего (решить 2 задачи: одну на разминочном/квалификационном раундах и одну в любом из трёх отборочных раундов), но по качеству это лучшая футболка из полученных мной в том году.
Футболка Google Code Jam — хорошая, по свободнее, чем у Яндекса, но после короткого времени начинает собирать на себе волосы, пыль и т.д. И стоит её почистить, как через полчаса она опять грязная.
Футболка Russian Code Cup — не могу сказать хорошая или нет, потому что мало её одевал из-за специфики изображения спереди футболки. Вот сзади нормальный рисунок — логотип соревнования, а спереди... слишком специфичная информация. Вот в позапрошлом году "1+1=10" хоть и может вызвать у простых людей необычные эмоции, но всё равно они проявят любопытство к надписи.
Футболка Яндекса — тоже специфичный рисунок, но он не привлекает внимания. Качество футболки очень хорошее, за исключением пары торчащих ниток, которые легко удаляются.
Футболка Codeforces — вроде бы указал на сайте M, на самой футболке написано M, но по размеру она явно S. Я смог одеть её... один раз... и не хочу повторять этот смертельный для футболки номер. Зато детишкам как раз будет.
P.S. Указаны лишь футболки, полученные за участие в онлайн соревнованиях.
Sir, could you show us the t-shirts ?!
Are you interested in t-shirts of previous years?
It would be interesting to see any yandex T-shirt:)
2015 t-shirt
Oh, you are first :)
2013 2014
I hope this year's one would be as cool as 2015 one :3
Yes it would be really nice if it is black i really like that color :D
When would the T-shirts be dispatched?
Яндекс что-то знает? :)
Учитывая место проведения финала, возникает очевидный вопрос — рубли таки белорусские? :)
рубли российские. пока у нас копеек нет, а вот во время финала уже будут
Отмечу, что на дату финала 300к белорусских рублей будет весьма впечатляющей суммой ;)
Что за мода пошла не оплачивать дорогу до места проведения? Ещё бы в Австралии финал провели.
Кто-то сокращает количество финалистов, кто-то убирает онсайты совсем, кто-то не оплачивает проезд. Какой из этих вариантов предпочтительнее?
Это, на самом деле, очень сложный вопрос. Может быть лучше градация — оплата дороги десяти лучшим, рады видеть ещё 30 дальше по списку, если сами приедете, а если и гостиница вам не нужна — то можем ещё 30 принять.
Конечно худший вариант — просто убрать онсайт. Даже если соревнование после этого становится международным.
Да, этот вариант выглядит также реализуемым. Но мой посыл был, что каждый из описанных сценариев имеет место быть. И, возможно, каждый из них дает некоторым из участников больше шансов сразиться в финале.
А вот я не смог понять из правил: правда ли единственный способ участия в финальном раунде — онсайт в Минске?
В финале можно участвовать очно в Минске или онлайн.
Из правил вторая опция не следует никак
.
Как-то очень категорично прозвучало. Лично я надеюсь, что многие финалисты захотят приехать в Минск именно на финал, а потом захотят еще приехать в наш город.
Несовершеннолетние участники могут получить футболку за отборочный этап?
Да, несовершеннолетние участники могут выиграть футболки
Пожелание — можно футболки отправлять Fedex? :) С меня прошлый раз из-за кривых рук DHL при получении содрали почти 40 долларов пошлин, сборов и оплат услуг (при оценочной стоимости футболки около 7 долларов).
Google и Facebook отправляли Fedex и ничего платить не пришлось.
Хотя у кого-то может быть наоборот.
Пока что я всем говорю, что футболка Yandex.Algorithms для меня самая ценная. :)
Пожалуйста, если такое будет происходить, то просто напиши сразу мне, служба логистики разумеется решила бы вопрос.
Спасибо, я думаю, что после отправки это уже не исправить — но если я выиграю футболку в этом году, я обязательно напишу своим пожелания вместе с адресом для доставки.
Футболки от Татьяныча?
Strange, I could not get past the registration page. It always shows "To view this page you have to authorize.", even though I have already been logged in to the site. Nothing happens when I clicked on the "authorize" after I logged in...
Anyone having the same problem? :(
Yes, same thing happened to me.
Fixed that, can you double check?
I had the same issue before but I was able to register just a while ago.
Sorry, I couldnt register. Not authorised.
Edit : Logging out and logging back in helped!
I still can't register. Clicking the link won't change anything. I've tried to log out and log back in but it doesn't help.
Link to screenshot
There is no option for English alphabet captcha in account recovery :(
hmmm, can you try https://passport.yandex.com for that?
I tried to register, but it always shows "To view this page you have to authorize". I'm already buggily logged in with Facebook (it keeps logging out whenever it feels like), but I can't seem to register. How do I know if I'm already registered or not?
I had the same problem. Then I tried replacing the option lang=en to lang=ru in the URL, and registration page appeared.
Since I don't understand Russian, I switched back to English and it was still working.
Thank you.
I registered using the Russian version and a translator xD. Now once registered the English version shows up as well.
GG registration page is filtered :( (benefits of living in iran)
Sorry about that. (Ads) You can always use Yandex.Browser with turbo mode! (/ads)
Thanks, but to have yandex browser you have to download it, and guess what? filters... filters everywhere... lol! still, gl to all participants!
unless access to turbo servers is closed too
Is filling in the obligatory fields (those with red '*'s) enough? I think I should at least provide an address for the T-shirts, if I somehow managed to win one.. But I couldn't find any fields about it.
We'll supply you with additional form with shipping information, when you will score within top 512 of elimination stage — make sure to fill in correct email address though.
Thanks for the quick reply!
Не могу понять,почему в пробном контесте на платформе Яндекс за решение
перой задачи(A+B) выводит вердикт:RE,при том,что у меня в среде
разработке всё компилируется без проблем.
Вот сам код(на Java):
import java.util.*;
public class SimpleTest
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a + b);
}
}
А вы точно правильно и внимательно прочитали раздел ограничений, где написано, откуда нужно читать входные данные (из input.txt)?
Пожалуйста, впредь задавайте такие вопросы через элемент интерфейса контеста "Сообщения" — так получится гораздо предметнее ответить на вопрос.
Kogda luchshe vtemnuyu a kogda v otkrituyu reshat?
Если абсолютно уверен — в темную, если не уверен или цель решить хоть 1 задачу тогда в открытую
Непонятно, зачем вообще сдавать втемную где бы то ни было, кроме как на финале. Единственный промах уносит далеко вниз, ниже того места, где можно было находиться, сдавая все в открытую.
Ну зависит же, если сдавая все ты будешь ниже 30, а сдавая что-то втемную имеешь шанс быть выше, тогда вероятность набрать очки из нулевой становится ненулевой
Да, для топовых участников это имеет смысл. Но если на финал нет шансов, а футболочку хочется, то только в открытую.
Наверняка будет куча народу сдавших по 2-3 задачи, и судьбу футболок будет решать штраф, и тут слепые попытки, могут помочь их получить
Посыл в том, что велика вероятность одну из задач не сдать из-за темной посылки, что хуже сколь угодно большого штрафа
Это понятно, но когда ты знаешь что пролетаешь мимо места/футболки с текущим штрафом, то имеет смысл рискнуть, и хоть призрачный шанс, да появится
Хотя при отсутствии обновляющейся во время соревнования общей таблицы, такое оценить будет сложно
I'm obligated to select an Eastern Europe city in order to register (even not being there), can I change my city after the registration ?
sure! Elaborate on that issue in feedback page of the service (lower left corner), after the contest
what is the difference between an open and a blind submission?
Blind submissions are tested only on samples, but you get negative penalty time if it's Accepted on the full testset
see rules. In short — open submissions work like regular ACM submissions — you get penalty for time and wrong attempts and full feedback on testing. With blind submission you only have one (1) attempt to send submission that will pass sample tests and can't resubmit — if that submission is correct you get negative penalty time
OK thanks. Wish I asked sooner :(
А что за WA 14 в задаче про шашматы? upd: нашел, зачем-то кэшировал значения, еще и неправильно.
E — задача на пользование
ГугломЯндексом. Остальные более или менее очевидные.Гуглить тоже надо уметь :( Я попробовал, ничего не нашел, пришлось честно написать брутфорсное решение и найти закономерность.
Расскажите последние 3 задачи, пожалуйста.
В "D" я строил опуклую оболочку, если хоть одна точка не вошла — невозможно, иначе переходим к следующему этапу проверки: берем из получившегося выпуклого пятиугольника каждое ребро (пусть e) и двух его ребер-соседей, если соседи пересеклись "впереди" (соседи смотрят от ребра e) то невозможно, ну а проверить легко с помощью векторного произведения.
кто-то расскажет адекватное решение С? Я написал 200 строк отборной фигни и оно прошло на последней минуте.
Динамика по позициям игроков и тому, кто ходит. Переходы — вот прям делаем те ходы, которые сказаны в условии. Циклов не будет, потому что черные всегда уменьшают одну из координат.
Код
How to solve problem F (Future Playlist)?
One possible approach was to use matrix exponentiation and speed up multiplications using strassen's method. Eventually for large m the answer would approach a constant value and thus we don't even have to exponentiate to 10^(2016), much lesser will suffice. This could have passed the time limit (barely) but there must be a better solution.
Orly? I don't think so:
Ok my bad...full exponentiation upto 10^(2016) will surely time out. We can use this https://discuss.codechef.com/questions/49614/linear-recurrence-using-cayley-hamilton-theorem
This is not a correct test. There should be non-zero elements on main diagonal and in the first column according to the statement.
The state 1 of the Markov chain described in the statement is essential because it is accessible from all other states, so there should exist the limit value for (Av)1.
OH HOW I LIKE TO NOT READ THE STATEMENT
(however, writing the most useful part in the input description is never a good idea imho)
It is actually a problem of finding a limit distribution of the Markov chain. It is guaranteed that 1 is an essential state, so at first step we should remove all inessential states (those are the states that cannot be reached from any other state with non-zero probability). After that all remaining states (in particular, 1) form an irreducible Markov chain where all states are positive recurrent (meaning that there is non-zero probability to return from each state to itself). For such Markov chain it can be proven that the limit distribution is exactly the stationary distribution (i.e. the distribution that transforms to itself after one step of a Markov chain), so we can find it as a left eigenvector of matrix B of that chain using Gauss elimination.
UPD: Looks like we don't even need to leave only essential states, it works even without it. All components of stationary distribution corresponding to the inessential states will be simply equal to zero that perfectly makes sense.
I didn't implement this, but I believe it works. Also I've seen author's solution, it also has a Gauss elimination :)
Would the power method work here instead of Gauss elimination?
I'm not sure because the speed of the convergence is exponential, though the base of the exponent depend on the eigenvalues of the matrix that may be pretty close to 1. Each matrix multiplication is O(n3), you simply won't be able to perform many of them.
The matrix multiplications should be only O(n2) right? We only need matrix-vector multiplications.
Nevertheless, I just implemented it and it didn't pass :(. I'll have to see the test data before figuring out what's wrong.
Code: http://pastebin.com/n0tGWTg7
Oh, I thought you are talking about fast matrix exponentiation first, and then multiplying the result by the distribution vector.
Still, my claim holds that you make too small number of multiplications. Think of the following test:
In order to move the most part of the distribution from the second state to the first you need about ~ 1 / eps steps that is too much. The answer here is 1 (the limit distribution is a vector (1, 0)).
Ah, I see. I eventually got this hacky solution to pass, by exponentiating the matrix just enough to be under the TL, and then finishing off with the power method to reach the necessary precision.
Acutally, there's no need to exponentiate the matrix. As Zlobober mentioned, after removing all inessential states, you will get a new transitive matrix M with dimension n′ × n′. Just solve the equations MX = 0 with an extra equation . You will get the final solution.
Here's my accepted code.
Просто умрите со своими геомами с дискретным ответом.
А что такого с этой геомой? Там такие ограничения, что она вся в интах делается.
Можно не додуматься до нормального решения и написать в тупую.
Переберем все перестановки из 5 точек, попробуем восстановить все возможные пятиугольники, пересекая прямые, образованные точками 1 2 и 3 4, точками 2 3 и 4 5 и т.д. Если хоть раз смогли получить выпуклый пятиугольник — Yes.
В таком решении у нас пересечение прямых в целых — получается третья степень исходных координат в числителе и вторая в знаменателе. Потом проверка на выпуклость, нужно числитель умножать на знаменатель. Пятая степень. Не лезет.
Will there be an editorial posted somewhere at some point?
Yes, tomorrow we will post it here.
Update. Posted.
Is it possible to solve C using dynamic programming approach?
Yep
Isn't it memoization?
Isn't it the same thing?
Probably, I am wrong, but I always thought that dynamic programming is when you build up the solution bottom-up (without recursion).
In the book "Algorithms" written by Dasgupta, Papadimitriou, and Vazirani, they make a clear distinction between memoizing technique and the dynamic programming.
I think, that these two techniques do exactly the same thing (reduce some big peoblem to a set of smaller problems) but in slightly different ways. And I can't think of a problem, that can be solved with memoization, but can't be solved with non-recursive dynamic programming, and vice versa.
It's good for us to argue about this, so we can brush up our theoretical knowledge :)
Here are my arguments:
1. There was no purpose in inventing the second name for dynamic programming. That is why memoization and dp have to stand for different concepts behind them. I don't believe they are synonyms.
2. It is trivial to estimate the complexity of dp solution. That is not the case for memoization. It is not at all obvious that the solution will not TL or overflow the stack.
3. Most importantly, dp solution and memoization solution will perform absolutely different set of operations. That is, in some cases memoization may explore only some part of solution space, whereas the dynamic programming solution will always explore all possibilities.
What to do with E? I was doing random shit and managed to pass 14 tests...
Read Wikipedia.
I just read the abstract of this paper.
And m = 1 is a special case to be considered apart.
Научите посылать тестовую задачу в закрытую:)
Как решать D? Я предположил такой необходимый и достаточный признак:
и получил WA9. Набажал в реализации или предположение неверное?
Условие правильное, но нужно учесть, что сами входные точки тоже должны образовывать выпуклый пятиугольник, а на входе они могут быть в произвольном порядке.
Chmel_Tolstiy я заметил, что у Вас компилятор Mono C# используется без флага -sdk, поэтому получается сборка совместимая с .Net Framework 2.0 и можно получить CE из-за использования, например,
Tuple
в коде. Хотя Mono 2.10.8 поддерживает .Net Framework 4.0. А также из-за отсутствия ссылки r:System.Numerics нельзя использоватьBigInteger
. Скажите пожалуйста, в остальных раундах можно ожидать такую же настройку компилятора?Тот момент когда наконец кто-то что-то послал на с# в яндекс контест
Действительно =)
leonidvasilyev, порекомендуйте строку вместо
exec mcs -optimize "$2" -out:"$3";;
Я не специалист, но думаю, что вариант с
dmcs
предпочтительней:exec dmcs -reference:System.Numerics -optimize "$2" -out:"$3";;
По идее можно передать аргумент
-sdk:4
, но конкретно для этой версии Mono из документации не ясно, будет лиmcs
работать в данном случае:exec mcs -sdk:4 -reference:System.Numerics -optimize "$2" -out:"$3";;
К сожалению, у меня сейчас нету возможности попробовать с Mono 2.10.8.1. Но вот такой код должен компилироваться и запускатся без ошибок, если всё в порядке:
Мы обновили настройки. Сообщите, если все еще что-то работает не так, как ожидалось и хотелось!
Успехов.
Когда раунд 1.1?
Это, если что, цензурная версия мыслей по поводу задачи C.
Посылки всветлую слабо отличаются от посылок втёмную. Спасибо тестирующей системе за это.
Шутка про то, что лучше кол-во таких контестов не увеличивать:o
Или не шутка
А что с ней было не так? Ну, не считая супер длинных очередей :)
Ну лично у меня вердикт сменился с WA 10 на AC где-то через час.
Оу, понятно.
Ответы no comments — это отличное подспорье, когда из-за баги в задаче ты сидишь и офигеваешь
What does "cumulative result" in T-shirt section mean? Is it calculated by overall accepted problems and penalties on every elimination rounds? If so, don't we have to take part in every round to get a T-shirt?
From my experience from last year,
First they sum the number of points you get, who has more stays in front (using that grand prix formula for giving points, sum all points you get during the 3 elimination rounds).
Tie-breaks are made by number of problems solved (sum of number of problems during the 3 rounds).
I am not sure about the last one, but I guess if you are tied in points and number of problems the tie-break is the sum of your penalty during the 3 elimination rounds.
Edit: If you get a point in a round you are guaranteed a t-shirt as only 30 people get points in a round. Last year Petr got first place in the first round, he didn't participate in any other elimination rounds (if I remember correctly) and got a spot in the onsite finals (because he had a lot of points). Participating in more rounds gives more chances to get points and solve more problems (which is the first tie-break criterion), but it is possible to only participate in one round and get a t-shirt (though not advisable if you want the t-shirt and got no points for the round).
Непонятно как в это играть людям у которых зависимость от кол-ва посылок, ну хреново я проверяю код. 30 минут опоздания сервера это конечно ппц
ага, узнавать об ошибке компиляции через 15 минут тоже очень клево
Кстати, расскажите, как можно в задаче с однозначным ответом добиться того, что у кого-то заходит, а у кого-то нет?
Легко! У одного должно быть правильное решение, у второго неправильное.
В соседней теме говорили, что там в 10 тесте числа не упорядочены были.
Когда разбор / как решить EF?
В E, ответ не может быть меньше n - 1. Чтобы узнать, насколько он больше, нужно идти слева направо, поддерживая диапазон координат, в котором может находиться текущая граница. В начале этот диапазон — от 0 до 0, соответствует левой границе. При переходе через чёрную дольку, диапазон "отражается" от неё, после чего сжимается, чтобы быть между двумя чёрными дольками (или долькой и правой границей). Если диапазон получается отрицательного размера, то к ответу прибавляется 1, а диапазон расширяется до максимального. В конце проверяется, что правая граница входит в диапазон, иначе к ответу прибавляется 1.
Может ли кто мне помочь разобраться с этим (http://codeforces.net/blog/entry/45238) Если коротко, то получил вердикт "ручная проверка" и не знаю что он означает
Does the problem D (cold countries) of on-line round 1 has any solutions like this?
Don't know what did you mean exactly. But the solution for this problem is also a formula ;). I computed it in O(p) and didn't try to reduce the complexity and simplify:
I had tried to submit your code (and many other) but always getting WA6. What it could be?
Dunno. Overflow maybe? Btw, I have
#define int int64_t
in my code ))Really, I've finally found it :) But your code have one too:
can't be OK (100 0 0), but tests are weak.
Hm. I think that everything is fine here. This line returns m!w! And we know for sure that either m = 0 or w = 0.
Maybe I'm missing something ?
Yes, 0! * 100! > M
Oh no, it's cursed task, I should guess after 15 submits! You're right, that was bug in my precalc :)
А официальный разбор раунда #1 где-нибудь есть?
Да, от автора задач. Разбор
спасибо
Есть ли возможность получить футболку не по почте, а забрать самому? Я из Минска, и, так как финал проходит в Минске, мне было бы удобно самому подъехать и забрать её. Если, конечно, я не смогу получить её по почте раньше.
Отличный план! Укажите как место получения адрес минского офиса Яндекса и напишите, что заберете футболку самостоятельно.
Минск, пр. Дзержинского, д. 5, БЦ Rubin Plaza, офис 318
А как мне понять, когда я могу заехать и забрать? (:
Когда я ее получу, и у меня будет информация, что она для вас. Я сразу напишу.
Спасибо!
Эта возможность доступна всем, или Melnik особенный?
Если мы говорим про Минск, то всем. Если другой город, то лучше отдельно уточнить.