Комментарии
На NickolasWhat is it like to be a problem writer?, 3 месяца назад
+60

Я, честно говоря, надеялся на конструктив, а не на обсуждение того, кто врет, а кто нет, и всяких других возможных следствий.

Давайте попробуем снова. Никто никого не обвиняет во вранье. Никто никого специально не игнорирует. Никакие связи Марии (Nickolas) не играли роли в том, что ее задачи взяли (это домыслы). Хороших авторов не хватает всегда. Если n лет назад поставить ту планку качества, которую хотелось бы в идеале иметь сейчас, их бы не хватало еще больше.

Теперь повторю просьбу: если Ваши знакомые заинтересованы в том, чтобы писать задачи для TC, я был бы очень рад, если бы Вы дали мне их контакты.

На NickolasWhat is it like to be a problem writer?, 3 месяца назад
+30
Среди моих знакомых есть люди с много более высоким рейтингом, так и не увидевшие ответа на свои заявления о райтерстве, либо предложенные задачи на TC.

Я один из алго-админов на ТопКодере. Хочу попросить – если кто-либо из Ваших знакомых до сих пор заинтересован, пожалуйста пришлите детали мне. Хороших авторов не хватает, если у людей есть хорошие задачи, мы бы с удовольствием взяли.

На ivan.popelyshevФинал Russian Code Cup, 8 месяцев назад
+20
Однозначно на порядок лучше чем последние два Code Jam'а в плане подхода, организации, отношения. По большинству факторов лучше чем TCO (и если это действительно будет ежегодно и желания/возможностей у организаторов не убавится, то думаю скоро будет почти по всем факторам лучше TCO). К сожалению не был на Фейсбуке, так что не могу сказать. Mail.ru приятно удивили.

По задачам (возможно) Code Jam немного лучше. (Возможно) было бы лучше, если бы победитель определялся на задаче более идейной, чем реализационной (при том вероятность того что это бы был Petr вряд ли бы существенно поменялась). Но вообще это не более чем личная привязанность. Объективно очень высокий уровень задач. С точки зрения баланса на порядки лучше чем последний Code Jam к примеру.
На dolphinigleCodeforces Beta Round #87, 8 месяцев назад
0
Maybe even Toastwoman. :)

Though, on a serious note, it seems dolphinigle doesn't reuse his characters too often, so I would expect some new heroes.
На DimaPhilTopCoder SRM #509, 11 месяцев назад
+49
Переносить неправильно, потому что у людей у многих запланировано время под сам СРМ. Если перенести, скажем на час, чтобы продлить регистрацию, то многие просто не смогут поучаствовать.
На AlexDmitrievSRM 507, 12 месяцев назад
+5
Через пару дней будет вот здесь: http://apps.topcoder.com/wiki/display/tc/Algorithm+Problem+Set+Analysis.

Но в целом решение довольно простое:

1) Если между начальной и конечной позицией есть дырка, то -1.
2) Если слева и справа от начальной и конечной позиций есть дырки, то поиск в ширину успевает (потому что не более 100 тысяч состояний и ~sqrt(100000) ходов из каждого).
3) Если слева или справа нет дырки, то фактически ходы никак не ограничены. Посмотрим разность d между начальной и конечной позицией. Если это точный квадрат, то хватит 1-го хода. Если d = x^2 + y^2 (проверим в лоб), то достаточно 2-х ходов. Если d -- нечетное, то тоже хватит двух ходов, потому что (x+1)^2 - x^2 = 2*x+1. Если d делится на 4, то снова хватит двух ходов, потому что (x+2)^2 - x^2 = 4*(x+1). Иначе d дает остаток 2 при делении на 4. Двух ходов хватить не может (потому что каждый квадрат дает остаток 0 или 1 при делении на 4, соответственно разность двух квадратов даст остаток 0, 1 или 3). Поэтому надо 3 хода (сначала делаем d-1 за два хода, потом добиваем за последний ход до d).
На AlexDmitrievSRM 507, 12 месяцев назад
0
Я уж подумал, что у нас тесты плохие. Но на самом деле все нормально. Посмотрите, там не совсем поиск в ширину, случай, когда с одной стороны нет дырок, обрабатывается отдельно.
На AlexDmitrievSRM 507, 12 месяцев назад
+1
Темпы регистрации говорят, что, пожалуй, все же будет. Слот субботний самый популярный, да и количество АСМ-финалистов в общей массе участников вряд ли больше чем 10%.
На AlexDmitrievSRM 507, 12 месяцев назад
+21
Сегодня 2250 лимит. На самом деле его пока еще ни разу не опускали, ну и потихоньку поднимаем.
На yaroЯндекс.Алгоритм 2011 - Раунд 2, 12 месяцев назад
0
This time it seems to be exactly this problem. The Wikipedia article even contains a link to all necessary answers (for n <= 128).
На yaroЯндекс.Алгоритм 2011 - Раунд 2, 12 месяцев назад
0
De Brujin sequence is somewhat similarly defined, but in fact is absolutely different topic.
На yaroЯндекс.Алгоритм 2011 - Раунд 2, 12 месяцев назад
+16
I implemented brute force and hoped to find some regularity in answers (it failed). Then I used brute force to count the number of valid answers for different values of k. Finally, I used OEIS to find that it corresponds to the number of primitive polynomials over GF(2).
На yaroЯндекс.Алгоритм 2011 - Раунд 2, 12 месяцев назад
0
Here is an example: http://www.ncd.matf.bg.ac.rs/~ezivkovm/publications/primpol1.pdf. I believe there are others as well, since the topic of "primitive polynomials" seems to be well-studied.
На yaroЯндекс.Алгоритм 2011 - Раунд 2, 12 месяцев назад
+5
There is an editorial for D published (russian only at this point). It follows from it that the intended approach is able to solve such problem for any function (Ks, s) (of course given that it can be calculated quickly).

Something that I didn't like about this problemset is E being quite easily googlable. Other problems were pretty good though.
На yarrrSRM 506, 12 месяцев назад
0
По каждому атрибуту построим точку в 3d: (first_slime[i], second_slime[i], third_slime[i]). Задача эквивалентна следующей: построить монотонную цепочку (у каждой следующей точки все 3 координаты >= предыдущей; в цепочке не обязательно столько же точек сколько во вводе) такую, что если каждую исходную точку модифицировать в ближайшую (по Манхэттену) точку построенной цепочки, то сумма будет минимальна. Можно показать, что в цепочке, которую мы строим, можно всегда считать, что у соседних точек две координаты совпадают, а третья +1 (с точки зрения сжатых координат). Отсюда простое ДП за N^3.
На yarrrSRM 506, 12 месяцев назад
0
Так странно что ее не решили. Ты за 6-ю степень знаешь?
На daftcoderGoogle Code Jam: Qualification Round, 12 месяцев назад
+15
Чтобы прошлый коммент не отпугивал потенциальных участников, ну и просто, чтобы было альтернативное мнение, скажу, что на мой взгляд задачи отличные. Из 4-х квалификационных раундов GCJ, которые я писал, этот мне кажется самым лучшим по подбору задач.

По поводу "идиотских" вопросов тоже не согласен. Думаю, они очень правильно сделали, как ответив на тот вопрос по С, так и сделав ответ доступным для всех. Аргументирую после окончания раунда.
На ir5Codeforces Beta Round #71, 13 месяцев назад
+19
I just can't go past this accusation (even if with "deep respect") without replying.  

First of all, problems of this round were written not only by rng_58, but also by ir5.

Second, all accusations in bad balance should never go to problem writer. It is hardly possible for a problem writer to estimate the difficulty of his/her problems correctly. In most cases, writer's estimate is lower than the actual difficulty. Much more exact estimate is usually done by people who test the problem.

So, if you want to blame somebody for bad balance, it should first of all go to people who tested the problemset. But even a better thing would be not to blame anybody, especially if the problems are nice (what, in my opinion, is definitely the case with today's D and E).

Practice shows that it's much easier to estimate difficulty of problems when the overall idea / approach is relatively straightforward, it then depends on the length / complexity of implementation and on popularity of algorithms / theory involved, overall it is quite easy to measure. When the idea is non-straightforward, making a difficulty estimate is very difficult. However, such problems are the best that one can meet at programming contests. While perhaps not everybody would agree with me, I personally think that bad balance is much better than boring problems.
На AlexDmitrievSRM 504, 13 месяцев назад
+12
Фейл никак не связан с количеством участников. Единственное, что room assignment совсем медленно отработал, а так вполне можно было бы еще поднимать.
Вообще успевает даже построение дерева заново на каждом шаге. Т.е. добавляем к прошлому дереву доп. ребро и просто все перестраиваем (я даже пересортировывал заново для простоты).
Предположим некоторый бит в X равен 1, а в Y равен 0. Тогда эти два бита можно поменять, не изменив X + Y и X xor Y и уменьшив X, т.е., получив лучшее решение.

Вряд ли имелось в виду, что нужно написать перебор с целью это заметить.
На ashmelevCodeforces Beta Round #66, 13 месяцев назад
0
Thank you for taking care of the issue!
На ashmelevCodeforces Beta Round #66, 13 месяцев назад
0
I read second line (Java, readLine() of BufferedReader) and then parse it. If there's no line at all, readLine() returns null and attempt to parse it results in runtime error. If there's an empty line, it works fine.

I'm pretty sure that my first submit (374644) is correct, given that testcases are formatted correctly. I haven't changed anything except input.
На ashmelevCodeforces Beta Round #66, 13 месяцев назад
+5
Since, as I see, it was decided to rate the match (at least my rating has been changed), I'd like to ask admins to add the second line into pretest 4, problem E (and other test cases, where appropriate), and to retest all submissions.

На ashmelevCodeforces Beta Round #66, 13 месяцев назад
+5
What's so clear about that? Is "unite provinces" something that can be understood in unique way? I don't see anything wrong with understanding "make them reachable from each other via roads". I think even merge is much better than unite (but I read russian version unfortunately during the match), though still far from ideal wording.
На ashmelevCodeforces Beta Round #66, 13 месяцев назад
+6
I'd like to support the opinion on making this round not rated.

I was not affected with ambiguities in E, it just hasn't occured to me that it would make any difference. Being less clever is sometimes good.

However, I was affected with two other issues:

1) In problem E, pretest 4 had n = 0 and had no second line at all. According to the statement, there must always be a second line. It costed me 5 extra submits and 25 minutes of lost time. Once I figured out that the problem is in input, I asked a question and I was answered that pretest 4 is okay (which is wrong).

2) This was already raised by KhaustovPavel in russian. In problem D, it is not explained whether the term "province" is static or dynamic. In other words, if we add an edge between two provinces, will it be one larger province or still two smaller ones? People say that the sentence "Maybe he'll have first to build several roads between cities in different provinces to merge the provinces" clarifies this. I can agree that it attempts to clarify the issue, but I do not agree that it clarifies that. Note that in russian version "unite" is used instead of "merge", which makes it even easier to understand the statement improperly.

Overall, it seems that emphasis in this particular round was made on having a lot of challenges. For example, pretests on D and E are pretty weak. I have nothing against such approach, but that should not come at cost of problem statements clarity.
На EgorTopCoder SRM 497, 15 месяцев назад
0
Это сборный контест из старых неиспользованных (ТопКодером) задач. В див-1 авторы misof, Mike Mirzayanov и stone.
На EgorTopCoder SRM 497, 15 месяцев назад
0
Тогда это не очень красиво со стороны автора задачи.
На EgorTopCoder SRM 497, 15 месяцев назад
0
Правильно ли я понимаю, что это соревнование не имело никакого отношения к ТопКодеру ?
На EgorTopCoder SRM 496, 16 месяцев назад
+8
"Ну а в таком графе мы для каждой вершины в пути берем два (или одно) самых больших ребра, так что путь максимален."

Это неправда. Например, если у нас есть "a", "bba", "bbb", "bbc", то "bba" соединяется ведь с "a" и "bbb", а не с "bbb" и "bbc".

===

В целом второй пункт легко обосновывается, если в первом пункте доказать, что это не только оптимальный гамильтонов путь, но и оптимальный гамильтонов цикл. Тогда мы посредством перестановок сыновей ставим 0 и 1 рядом в цикле, а отсюда сразу следует, что если разорвать ребро между ними, то получится оптимальная гамильтонова цепочка.

Для доказательства первого пункта в принципе нужно доказать, что (в гамильтоновом цикле или пути), если у вершины бора есть несколько сыновей, то обязательно все слова внутри каждого из соответствующих поддеревьев посещать "за один заход". Это несложно доказать от противного.
На ivan.popelyshevSRM 490, 17 месяцев назад
+1
Проблема в том, что если мы вырежем этот кусок пути, то закончим уже не в клетке (R', C'), а на какое-то количество шаблонов выше, а это уже не совсем то, чего хотелось бы достичь.
На KADRCodeforces Beta Round #13, 2 года назад
+3
Yes, we can assume this. More exactly, the solution has the following structure. Let the input sequence be a[0], a[1], ..., a[N-1] and we want to construct b[0] < b[1] < ... < b[N-1]. The solution consists of several segments (st[0], fn[0]), (st[1], fn[1]), ..., (st[k-1], fn[k-1]), where st[0] = 0, fn[k-1] = N-1, st[i] = fn[i-1] + 1. For each  segment i there's some index mid[i], st[i] <= mid[i] <= fn[i], such that each b[j], st[i] <= j <= fn[i], is equal to a[mid[i]] + (j - mid[i]).

This property leads to O(N^3) solution and this is the best I was able to come with so far. Of course, something much faster is required...
На KADRCodeforces Beta Round #13, 2 года назад
0
Yes, you're correct, I haven't noticed we have Ruby/Python/php in the list of allowed languages. Though, as far as I understand, it's just impossible to solve some of the given problems on these languages.

In this case, it would be nice to define the subset of allowed languages such that each problem is guaranteed to be solvable on each of these languages. Then the limit can be set based on the reference solution written on the slowest language from this subset. I'm not sure if it's a good idea to include only C/C++ in this subset.

Anyway, I don't really mind how the time limits are set. It just would be nice to have a common publically available standard to set them.
На KADRCodeforces Beta Round #13, 2 года назад
0
[This is slightly off-topic, sorry for this.]

I've seen a similar problem at BOI'2004: http://www.boi2004.lv/Uzd_diena1.pdf (third problem). The main two differences: the limit on sequence length is 1000000, resulted sequence must be strictly increasing. I've been thinking for quite a lot on that problem and still don't have any working ideas. If anybody has clues on how it can be solved, could you please post.
На KADRCodeforces Beta Round #13, 2 года назад
0
"По-моему, могли бы клар и не давать. На некоторых контестах, жюри посовещалось бы и ответило "No comments". ;-)"

Не хотел бы я участвовать в таком "некотором" контесте :) Я не вижу явного противоречия в том, чтобы понять условие как "третий отрезок пересекает каждый из двух остальных", хоть эта интерпретация и кажется совершенно неинтуинтивной.
На KADRCodeforces Beta Round #13, 2 года назад
+1
I see, the decision is reasonable since your implementation being rewritten in Java would almost certainly pass within 2 seconds. But this almost doesn't leave any space for not so optimized solutions (generally speaking, this is not necessarily a bad thing, but for this particular problem it seems that C++ coders had a significant advantage).

I think (and this is a question to Mike) it would be nice to have a kind of standard for setting time limits at Codeforces. For example, time limit must be at least twice the running time of the reference solution implemented on the slowest available language (or something like this).
На KADRCodeforces Beta Round #13, 2 года назад
+3
Так а он на самом деле доступен, вот ссылка на все правильные решения по D:

http://codeforces.ru/contest/13/status/D

Там он немного кривой, т.к. пришлось в TopCoder Arena писать (у меня не было плюсов на компьютере).
На KADRCodeforces Beta Round #13, 2 года назад
0
Есть такое ощущение, что поднять ограничения не особо бы помогло. В "быстром" (N^2 * (N + M)) решении сами операции довольно тяжелые (геометрия), а в "медленном" (N^3 * M / 32) вроде операций и побольше, но сами операции (битовый and) намного легче. В итоге мне кажется разница времени работы будет буквально в 2 раза, а то и меньше.
На KADRCodeforces Beta Round #13, 2 года назад
0
As a clarification of my previous post, "you" meant "problem writer and/or testers".
На KADRCodeforces Beta Round #13, 2 года назад
0
Seems it would be nice to have a higher time limit (as even this solution required additional optimization).
На KADRCodeforces Beta Round #13, 2 года назад
0
Я делал совершенно то же самое, в итоге на С++ прошло за 1.7 секунды, на других же языках такое ощущение что сдать это почти без шансов. Скорее всего, это не было одним из предполагаемых решений.

Вообще с учетом того, что даже N^2 (N + M) решения требовали значительных оптимизаций, мне кажется, что более щедрый тайм-лимит по этой задаче (скажем, 4 секунды вместо 2-х) был бы более правильным.
На KADRCodeforces Beta Round #13, 2 года назад
0
Ну у меня вот N^3 * M / 32 в итоге прошло и в принципе без шаманств, хотя оптимизировать пришлось :)

Мне почему-то кажется, что у авторского решения такая же ассимптотика (т.е. N^2 * (N + M)).
На KADRCodeforces Beta Round #13, 2 года назад
0
I wonder whether you had a Java implementation for D and if yes then what was the worst execution time on a single testcase. My Java implementation timed out despite all possible optimizations I was able to come with and then the same solution on C++ passed. [My solution was N^3 * M / 32 and I understand that it's possible to solve in N^3, but still it wasn't something I liked, despite even some straightforward N^3 precalculations took around 1 second on my PC.]

Overall, the problems were nice. Thanks for the round!
На meretCodeforces Beta Round #11, 2 года назад
0
I wonder what was your problem with B that leaded to so many incorrect attempts.
На meretCodeforces Beta Round #11, 2 года назад
0
Thanks for the round!

I really liked problem E. I haven't solved it and maybe even far from complete solution yet, but solving it was very interesting.
На daftcoderTechnical minimum, 2 года назад
0
Неужели правда была динамика по рваному краю в 250? Я не встречал, но вообще для 250 это было бы слишком сложно (если брать уровень сейчас, а раньше вроде бы было легче).
На daftcoderTechnical minimum, 2 года назад
+1
На ТопКодере для успешного выступления изучением множества специализированных алгоритмов заниматься (почти) бесполезно. Просто наиболее реальный результат использования задачи, которая очень сильно базируется на каком-то сложном алгоритме, который мало кто знает -- либо никто не решит, либо решат те, кто погуглят и возьмут его откуда-нибудь из интернета. Оба случая малоинтересны.

Задача на Фурье действительно один раз была, но она решалась также и алгоритмом Карацубы, причем это решение было авторским. Хотя в результате так ее решил вроде бы только Petr, а остальные достали Фурье из загашников (ну и еще Psyho вроде написал лобовое решение с ассемблерными вставками). Т.е. получилась полная ерунда, ну и фидбек по задаче был соответствующий - в стиле "одна из худших 1000-задач за все время на ТС". Так что это скорее такое исключение, которое подтверждает правило.

Иногда (но тоже редко) бывает, что задача использует какой-нибудь (относительно) малоизвестный факт. Например, в январе была задача, существенно основанная на том, что любой двудольный граф имеет реберную раскраску в кол-во цветов, равное его максимальной степени. Так что в принципе изучение сложных алгоритмов может помочь, если их детально изучать, с обоснованием, плюс если знать много разных сопутствующих фактов. Но это тоже, мне кажется, довольно редкая вещь.
На Alex_KPRTopcoder Member SRM 465, 2 года назад
0
Если имеется в виду, что такое решение даже на совсем маленьких тестах валилось, то это однозначно какая-то ошибка в реализации.
На ivan.popelyshevЗеркало TTB , 2 года назад
0
На самом деле все не так было. Финансирование Epam не прекращал, оно просто всегда оставляло, скажем так, желать лучшего (оно и понятно, Epam никогда не понимал, зачем им подобный проект вообще нужен). Вот команда потихоньку и разбежалась. Мы с Леной Носовой, к примеру, на TopCoder ушли. Вроде после пытались на Epam'е как-то все это реанимировать, но, как видно, безуспешно.
На ivan.popelyshevЗеркало TTB , 2 года назад
0
Спасибо за ссылку огромное! У меня тоже еще та ностальгия, все-таки два с половиной года жизни прошло там... Иногда после и хотелось посмотреть, как оно было, вспомнить что-то, да негде было.