|
+12
На тему целесообразности таких занятий, и старперства, поднявшегося в этой теме. Я общался с одним человеком, который за несколько лет самостоятельно написал компилятор C++. Когда я последний раз с ним разговаривал (это было лет 5 назад), он уже приближался к поддержке всех основных фич C++ ISO 2003, и потихоньку начал копать в сторону оптимизации кода. Нужен ли миру его компилятор C++? Вряд ли. Но это нисколько не волновало его: и это-то, на мой взгляд, и восхитительно :) Это замечательный пример уверенности в себе, упорства, и желания творить. Чего я и желаю автору данного топика. |
|
+15
Помнится, я тоже начинал писать свой клон Visual Studio… Понятно, чем это закончилось: как и у тысяч других начинающих программистов, проект завяз где-то в стадии ver. 1E-12 (для меня самыми убийственными оказались вопросы отладки: сделать “на коленке” хороший отладчик, который может тягаться с возможностями Visual Studio, ни за что не получится). Но считаю ли я, что переоценил свои силы и впустую потратил время? Нет конечно. Чтобы научиться чему-то, нет способа лучше, чем немедля взять и погрузиться в это. И для этого что может быть лучше, чем амбициозная задача, поставленная перед самим собой?.. |
|
0
Ну да, а перед этим долго и упорно искал Формулу :) |
|
+9
Кто ещё решал B div 1 с ограничениями K <= 10^9? :) |
|
+6
Сам Facebook, очевидно, и оплачивал. Билеты на самолёт + 40$ “суточные” (например, на еду, или любые другие расходы — но потом всё подтверждать чеками надо будет). |
|
+160
Угу. Я вечером перед контестом подготовил всё для распараллеливания решений: оставил в номере работающий ноут с VPN’ом к 24-ядерному сервачку, написал скриптики для запуска на всех тестах и склеивания их ответов, для доступа к этому ноуту поставил TeamView… Только вот на контесте параллелить оказалось нечего.
|
|
+1
Да, у меня примерно то же самое. |
|
-6
А я не понял, что, пригласительные e-mail’ы рассылались всем пользователям ВКонтакте? Тогда даже странно, что всего 4000 тысячи человек пришли. |
|
+5
Ну такие книги, как Кормен, и другие “классические” вещи, которые расходятся в огромных тиражах, конечно, дают им хороший доход, но большинство остальных книг, а уж тем более статей, продаются куда скромнее. Но, как мне кажется, сам факт продажи научных статей и учебных книг дискредитирует их смысл. Имхо, должна быть бесплатно доступная электронная версия, ну и бумажная версия, которая, естественно, не бесплатна. |
|
+5
Ну ничего экстраординарного в этой книге нет, но она содержит цельное представление о теории кратчайших путей и потоков. В общем, книга хорошая, особенно на этапе изучения потоковых алгоритмов, но конкретно в твоём случае, когда все базовые алгоритмы уже знакомы, она мало что даст в олимпиадах. В любом случае, я-то, наивный, полагал, что она стоит 500-1000 рублей, ну может 1500, но такие деньги… Даже 120$+доставка = немаленькая сумма. |
|
+127
Все мои материалы (статьи, код) — под Public Domain. Вкратце — это означает, что любой может использовать материалы как угодно (перепубликовывать, редактировать, использовать в личных целях), я отказываюсь от всех прав на них. |
|
+3
Другой характерный пример — несколько лет назад я активно искал книгу Ahuja “Network flows”, и т.к. никак не мог найти в электронном виде, то решил немного раскошелиться и купить. Гугление сразу выдаёт ссылку в озоне: http://www.ozon.ru/context/detail/id/1790165/ цена: 13 320 руб. подняв челюсть с пола, я отказался от своей затеи, и таки нашёл пиратку (вернее, добрые люди прислали) |
|
+13
нет, я не выкладывал под другой ссылкой. сейчас вообще стёр все упоминания. |
|
0
ок:) |
|
0
С музыкой и прочим, я тоже думаю, всё сложнее — недавние эксперименты со свободной музыкой показали, что заработать что-то могут только уже очень известные группы, а остальные — зарабатывают на этом копейки. Но не хотелось бы раздувать тему до неподъёмного холивара, хочется ограничиться узкой, хорошо знакомой всем сферой. |
|
0
Наверное надо перевести :) Не хочется лишнего риска, потому что, собственно, им не составит труда написать моему хостеру и потребовать закрыть сайт (а с хостером по этому поводу я давно списывался: мне сказали, что пока на выложенные книги нет жалоб, им всё равно, но при первой же проигнорированной мной жалобе они отказываются от своих обязательств). UPD: стёр совсем |
|
+6
Есть ещё один интересный факт. Когда-то я разговаривал со своим научным руководителем — у него издано несколько книг по достаточно узкой тематике, где мало книг вообще, а русских — тем более. Так вот, я был поражен, когда узнал, что он не получает от продаж этих книг ни копейки! Точнее, какие-то копейки ему положены, но суммы настолько смешные, что, по его словам, “приходить за ними в издательство просто стыдно”. Так что и по “ту сторону баррикад” люди тоже мало что выигрывают от копирастии. |
|
+35
Да, доказательство по индукции трудно назвать решением — надо же сначала как-то придумать эту формулу. Я выводил так. Есть известный код Прюфера: это последовательность из n-2 чисел, где каждое число от 1 до n. Любая такая последовательность взаимно однозначно соответствует некоторому дереву. Отсюда, в частности, уже следует формула Кэли, что число остовных деревьев в полном графе равно nn - 2. Ещё одно замечание — если степень вершины в дереве равна d[i], то в коде Прюфера она будет встречаться d[i]-1 раз. Чтобы решать задачу D, надо заметить, что фактически мы должны найти количество остовов в графе из CC вершин (где CC — количество компонент связности), но где каждая вершина имеет “вес” S[i] (где S[i] — размер i-ой компоненты связности). Этот “вес” означает, что когда мы подводим к i-ой вершине ребро, на самом деле это ребро можно подвести не одним, а S[i] способами (к любой вершине этой компоненты связности). Связывая два предыдущих абзаца, задача сводится к тому, чтобы свернуть такую формулу: сумма по всевозможным d[i]>=1 (где сумма всех d[i] = 2*CC-2) таких величин: s[1]^d[1] * s[2]^d[2] * … * s[CC]^d[CC] * multinom(CC-2,d[1]-1,d[2]-1,…,d[CC]-1), где multinom(n,k1,k2,..,ki) — это мультиномиальный коэффициент, аналог биномиального, только когда надо выбирать сразу несколько видов объектов (выражается через факториалы очень просто, по аналогии с биномиальным). Всё, последний шаг — заметить, что “мультиномиальные коэффициенты” + “степени переменных” = любовь :) В том смысле, что мультиномиальные коэффициенты появляются, когда раскрывают выражение вида: (x1+x2+..+xi)^j Если выписать такую степень через мультиномиальные коэффициенты (что опять же несложно, по аналогии с суммой двух переменных и биномиальными коэффициентами), то, сравнивая её с нашей формулой, получаем ответ: s[1] * s[2] * … * s[CC] * (s[1]+s[2]+…+s[CC])^(CC-2) = = s[1] * s[2] * … * s[CC] * n^(CC-2) |
|
+22
Уверены, что можно доверять тестам под виртуальной машиной в разных операционных системах? У меня есть сомнения по этому поводу, учитывая, что современные виртуальные машины весьма сложны и далеки от простого линейного “имитирования” машинного кода. (Из этой же серии у меня вот под VMWare недавно получилось, что на языке D map работает якобы в 3 раза быстрее, чем в C++ — что выглядит весьма подозрительно) |
|
+24
Who will read this at LightOJ? One can’t read anything here without registration, and this is really weird. |
|
+5
В E на контесте мне не показалось понятным, что искомый ответ можно представить в виде подмножества выпуклой оболочки. Иными словами, почему не может так получиться, что есть один критический круг, упирающийся в точки P[1] и P[3], и другой — в точки P[2] и P[4]? Хотя сейчас это как-то смутно осознаётся, но чётко пока не могу понять. |
|
+12
Дело тут не столько в C++, сколько в том, что в процессорах Intel давным-давно было принято такое решение: SHL на >31 работает неожиданно — берёт аргумент по модулю 32. Мотивы этого мне неизвестны — может быть, это бывает полезно при оптимизации. |
|
+35
По-моему, уж кто надменен, так это те пара личностей, недавно [недо]покинувших кодефорсес, которые почему-то решили, что это они здесь хозяева-баре… |
|
+28
Забавно, что я сегодня показал свой лучший результат на codeforces, хотя болею и температурю. Вроде бы голова ничего не соображает, а пальцы сами пишут решение :) Вспоминая тему примерно полугодичной давности “контесты <=> алкоголь”, я готов поверить, что в не самом адекватном состоянии человек может прекрасно решать контесты :) |
|
0
Я не большой специалист, но примерно — месяц. Но мне лично 2 года назад сделали за 5 или 6 недель, в общем, тогда я получил визу на руки за несколько часов до вылета :) |
|
0
А там же надо сначала отправлять в посольство документы, что же, можно без этого Letter отправлять? |
|
+21
А кто-нибудь видит какой-нибудь официальный e-mail HackerCup (или другой способ связаться с ними)? Просто хотелось бы побыстрей получить Invitation Letter, ибо сроки для визы поджимают… |
|
+16
Весьма неожиданный способ выстрелить верёвкой. Интуитивно же вот кажется, что деструкторы на то и бывают виртуальными, чтобы в ситуациях подобных этим разбираться. |
|
На Burunduk1 →
Левит (модифицированный Ford-Bellman) с e-maxx.ru работает за экспоненту., 4 месяца назад
+14
Надо признать, что мне писали об этом на почту, но я всё не находил времени сесть разобраться… Да и во всяких научных статьях конкретно того “Левита”, что у меня, я не находил, поэтому оставалась надежда, что он всё же полиномиальный. Эх, жалко, такой ведь забавный алгоритм был :) P.S. Да и всё равно не отнять у него скорости работы на случайных тестах или некоторых графах особого вида (например, граф переходов по клеткам клетчатого поля) — обычное дело, когда на тестах жюри он отрабатывает быстрее Дейкстры :) |
|
Кстати, только недавно обнаружил японский аналог емакса: Spaghetti Source (там действительно японский: читать в гуглтранслейте).
|
|
+17
А можно не создавать шаблон, а отредактировать стандартные настройки. Поскольку проекты в VS генерятся javascript-скриптами, придётся залезть в них. Вариант 1. Открываем %VS_DIR%\VC\VCWizards\1033\common.js, там находим функцию AddCommonConfig(), в ней исправляем WarningLevel_3 на WarningLevel_4 (в двух местах: для Debug и Release). Вариант 2 (если хочется менять только для Win32-проектов). Открываем %VS_DIR%\VC\VCWizards\AppWiz\Generic\Application\scripts\1033\default.js, находим функцию AddSpecificConfig(), и там в двух местах дописываем строки: CLTool.WarningLevel = WarningLevel_4; (дописываем их куда-нибудь в подходящее место, например, после строки "var CLTool = config.Tools("VCCLCompilerTool");") |
|
-7
Yes
|
|
+8
Maybe by O(N^2)-solution a hash-map solution was meant? If you fix one point, you have to find maximum number of another points that have the same polar angle. So the problem transforms into finding the number that encountered maximum number of times among given N-1 double numbers - this can be done with hash-map (also you can try to replace double angles with pairs of integers - reduced fractions). |
|
+20
Unfortunately, IMO there's nothing to report :) One should never compare precise double values, because there's no guarantee that compiler produced exactly the code we wrote. Another instructive example is the following. You wrote DP (which computed, for example, maximum of some double function) and want to restore, at which value did the maximum achieved. for (int i=0; i<x; ++i) dp = max (dp, value (i)); for (int i=0; i<x; ++i) if (dp == value (i)) sel = i; That's totally wrong! Due to some complex optimizations and, as a result, changing of double values, assignment "sel = i" could occur never. That's not a bug because compilers are given freedom with operating with floating-point expressions, and it usually a very bad idea to compare doubles without epsilon. |
|
0
Я тоже написал всё решение с выводом индексов, и только на прогоне семплов понял, что это не нужно, пришлось стирать часть решения :)
|
|
+40
Просто facepalm.
|
|
0
в этом году - да
|
|
+46
У нас в команде (Саратов СУ 2) мы заметили, что прошли через две ступени: 1) узнали про понятие "асимптотика" - т.е. то, как заранее отличать "чёткие" решения от слишком медленных; 2) забыли про понятие "асимптотика" - т.е. стали сдаваться задачи не только с миллиардной асимптотикой, а даже с какими-нибудь 2100 операций: весь вопрос лишь в качестве отсечений :) |
|
+13
А там достаточно тупое решение. Дело в том, что даже в худшем случае нам не придётся менять очень уж много элементов, потому что количество различных чисел (пусть даже и с константной суммой цифр) растёт весьма быстро. Поэтому решаем так: перебираем, сколько цифр на суффиксе входного числа мы будем менять, и запускаем динамику с двумя состояниями (количество_цифр, сумма_цифр), которая возвращает нам количество таких чисел - и если это количество стало >= T, то мы останавливаемся и выводим ответ, восстанавливая его по динамике. Точно асимптотику сложно оценить, но работает быстро. |
|
+12
Потому что пирамидки сами имеют наклонную форму.
Вообще это сложно понять физически, но это можно вывести формулами. |
|
+5
Ну да, хорошое сравнение - Borland Pascal и Eclipse ;) Вообще вспоминаю время, когда мы во время подготовки к Финалу всё писали на Eclipse, как садо-мазо-развлечения :-D |
|
+17
G (Midsummer Fires): Ключевой факт - что каждая тень - это такая бесконечная полоска с константной толщиной (короче, прямоугольную форму имеет). Задача свелась к тому, что есть такие бесконечные полоски, и есть точки, и надо для каждой точки узнать, попала она хоть в одну полоску или нет. Учитывая, что все эти полоски ориентированы по направлению от одной и той же точки - от точки источника света, можно сделать такое решение: отсортировать всё (и полоски, и точки) по расстоянию от источника света и обрабатывать в этом порядке. Мы поддерживаем все текущие полоски в отсортированном по углу порядке (в виде set, например), и тогда для ответа на запрос нам надо просто взять две полоски, соседние по полярному углу с текущей точкой-запросом (можно понять, что другие полоски, чем ближайшие по углу, нет смысла брать). Ну и там у нас проблемы с точностью были, так что стараться как можно больше всего в целых числах делать. P.S. Задача B тоже интересует, мы не сдали. |
|
+4
У нас в Eclipse были другие проблемы - что иногда он умудряется начинать дебагать программу, не перекомпилировав её. Т.е. можно пошагово дебагать программу и наблюдать, как курсор текущей команды гуляет по пустым строкам или комментарями :-D
|
|
+58
If there were only one banana, then the answer would be 1 + K * (K+1) / 2 (it's easy to construct such a placement of lines, where each line intersects all previous, and all intersection points are different). Now suppose we have several bananas. If there is a line that intersects all bananas (intersects, but not touches), then the answer is 1 + K * (K+1) / 2 + (K + 1) * (N - 1). This formula means that we take an answer for one banana, and we cut all the remaining bananas by K lines into K+1 parts (because all intersection points are situated in the first banana). Why is it optimal to put all intersection points into one banana? Because each intersection point adds +1 to answer, so we've already achieved theoretically maximum possible value. So, the problem is in reality the following: given N circles, determine, how many of them can be intersected using one line. I've solved it in O (N^2 log N) in the following manner: we suppose that the line touches one of the circles (we iterate over all N of them), so the position of the line can be described as polar angle. So any other circle can be described as an interval [angle1; angle2), where angle1 and angle 2 are the angles, when our line touches this circle. (We exclude the right end of the segment, because we don't want to find an answer, were a line touches several circles, but can't be made to intersect all of them.) So, the algorithm now is to find the point with maximum number of intervals covering it, which can be done in O (N log N). |
|
0
А в D - почему неправильно делать так: брать минимум и максимум, удалять их, и говорить, что мы сейчас сделаем из них цикл, поэтому все числа между ними мы удаляем по два раза. И всё это завернуть в while (есть хотя бы одно число). Т.е. мы так находим несколько циклов, которые можно склеить в один большой цикл - ответ. |
|
0
Понятно. Я идиот. Забыл прибавить бананы, которые мы не пересекли. Теперь Accepted.
|
|
0
А какая в E правильная формула, если мы знаем C (количество кругов, пересекаемых одной прямой)?
|
|
0
А какое решение в D?
|
|
0
Ну я имею в виду, для желающих есть G++ 0x.
|
|
0
AFAIK на наших контестерах пробовали внедрить 2008-й вижак, но в итоге оказалось, что в нём всё только гораздо медленнее - видимо, т.к. STL стала тормознее. И в итоге откатились обратно к 2005-й. Не знаю, возможно, с этой тормознутостью можно бороться какими-то флагами компилятора... (Правда, есть вариант сделать доступными обе версии на выбор - как с G++ поступили) |
|
0
На нормальных judge'ах стек выставлен больше, чем дефолтный 1 мегабайт. Поэтому обычно надо лишь у себя на машине компилировать с флагами (которые привёл ashmelev), и спокойно отсылать код.
|
|
+8
Codeforces has become a great stress-test for C++ compilers, and it looks like GNU C++ definetily fails it :) (there have been about 10 topics here about the code that is wrongly compiled by G++ with -O2 option enabled) |
|
+1
Yes, the running time is O(X (|V|+|E|)), where X is the number of vertices on the left. So if we choose left side as smaller side and right side as larger - it will be much faster that vice versa. Also it's widely known that in reality this upper bound is never reached. Additionally, there exists a trick, when before executing the DFS you try to find an straight edge to a non-saturated vertex. This trick greatly improves the running time, and makes the algorithm applicable even for thousands of vertices. |
|
+6
Для суффиксного автомата это решается следующим образом. Заметим, что одному состоянию автомата может соответствовать несколько строк (причём разной длины). Однако известно, что все строки, соответствующие одному состоянию - их длины образуют некоторый сплошной отрезок [a;b], причём никакая длина не повторяется дважды. Более того, стандартный алгоритм подсчитывает это число b - оно там называется length. Число a можно найти так: перейдём из текущего состояния по суффиксной ссылке и возьмём его length + 1. Ну и всё, мы научились узнавать для каждого состояния этот отрезок длин [a;b], теперь надо просто к ответу прибавить длину пересечения этого отрезка с отрезком [l;r]. P.S. Вообще задачи всегда проще решаются на суфф. дереве (в данном случае это тоже верно), однако из соображений скорости написания обычно предпочтительней уметь решать те же задачи с помощью суфф. автомата. |
|
+5
Я думаю, все долго понимали :) А обозначает это следующее: вот мы получили список длины k (т.е. k пар чисел). Тогда от нас требуется узнать число подмассивов этого списка, т.е. число пар (l,r) таких, что: |
|
+9
Насколько я знаю, у этой задачи вообще нет решения, существенно более быстрого, чем за куб. Например, Takaoka в 2002 г. предложил алгоритм с асимптотикой O (n^3 * sqrt{ log log n / log n }) ("Efficient Algorithms for the Maximum Subarray Problem by Distance Matrix Multiplication"). |
|
+12
[offtop] Кстати, меня всегда удивляло - почему нельзя избавиться от рекламы на бесплатных хостингах, просто повесив обработчик сразу после открытия страницы, который кликает куда надо или просто убивает DOM-элемент с баннером? По крайней мере, когда e-maxx.ru ещё жил на бесплатном хостинге, я так и делал :) Например, у вас это бы выглядело как-то так (на jQuery) : jQuery(function(){ jQuery('div:eq(1)').remove(); }); |
|
+3
ИМХО, платные безусловно лучше. Хотя если делаешь сайт не больше чем на неделю - то наверное подойдёт любой популярный бесплатный хостинг. Но надёжности и полноценности настройки от него не дождёшься.
|
|
0
Хороший вопрос, тогда этот вариант не катит.
|
|
0
В общем, пока ответа нет, я здесь написал свои соображения. |
|
+8
Наверное, тут важно как раз в обратную сторону показать сводимость.
|
|
0
А умеем ли мы искать обратный к элементу и вычислять квадратный корень?
|
|
На JKeeJ1e30 →
Нахождение всеx пар вершин, путь между которыми бесконечно малый по величине, за O(n*m), 7 месяцев назад
+13
Ну, видимо - не боян, но теперь стал им :) Проблема этой задачи, наверное, в том, что не так-то просто отделить быстрый N^3 Флойда от NM достаточно навороченного алгоритма. |
|
0
Нет, т.к. express вроде как вообще не поддерживает extensions.
|
|
+5
А в "голой" студии вряд ли возможно. |
|
+3
Спасибо! Да, мы на 4:57 поняли, где была допущена маленькая ошибка, на 4:58:30 сдали :) |
|
0
Ну да, там просто регаешься на сайте, потом входишь в contests и решаешь :) А предварительной регистрации там не было никогда.
|
|
+5
Я думаю, просто компы сейчас нормальные :) Не всегда было так быстро... И, кстати, по моим ощущениям g++ всегда ещё дольше, чем cl, компилил. Хотя не замерял - возможно, я не прав. |
|
+47
Всем спасибо за поздравления!
|
|
0
It looks like the task is to find common subsequence, not substring.
|
|
0
То же самое начал писать, но потом понял, что тогда мы должны будем уметь искать суфф.ссылку для состояния посередине ребра. Если делать это "в лоб" (поднимаясь до предка, потом спускаясь), то будет квадрат же...
|
|
0
На самом деле, если по условию задачи нас спрашивают найти все такие пары вершин (i,j), между которыми путь бесконечно мал, то алгоритм Форда-Беллмана здесь уже будет хуже - его придётся запускать n раз (по крайней мере, я не знаю способа избежать этого).
|
|
0
А что именно непонятно? Само условие или почему это так? Ещё раз, само условие выглядит так: если существует такая t, что d[i][t]<INF && d[t][t]<0 && d[t][j]<INF, то кратчайший путь (i,j) - бесконечно маленький. |
|
0
AFAIK, правильно так: "между вершинами i и j не существует кратчайшего пути тогда и только тогда, когда найдётся такая вершина t, достижимая из i и из которой достижима j, для которой выполняется d[t][t]<0" |
|
0
|
|
0
Yes, possibly, the result itself is more interesting than the algorithm
|
|
0
Твой пост в русском языке, топикстартер его не видит.
|
|
0
Btw, when Petr commented this problem from his problemset, he said that he gave this problem just to show that such a beautifully powerful algorithm exists :) |
|
0
You mean O(K*MlogN)? This is about 10^10 :) I solved this problem several years ago, my solution was according to the Eppstein's article. And I viewed other solutions - they were in fact the same too. |
|
0
Кстати, файлы-проекты .sln, .suo, .vcproj, .vcxproj.* и подобные точно не стоило удалять - это же и есть сами проекты :) Они и занимают совсем уж мало места. |
|
0
Казалось бы, меню Project -> Clean project (или как-то примерно так) как раз и очищает всё это? А вообще когда-то давно я тоже делал подобную утилиту :) Основное место занимают файлы IntelliSense и .obj-файлы, остающиеся от компиляции каждого .cpp файла. |
|
+5
Кстати, по поводу новой статьи на e-maxx: у кого-нибудь есть что-нибудь ещё, что можно указать как интересные применения DSU? У меня сейчас есть:
Наверняка есть ещё что-нибудь, о чём я забыл - как минимум, из Петрозаводска какая-нибудь жесть :) |
|
0
Да, Кормен ссылается на Тарьяна. Я пока ещё только приступаю к попытке изучения доказательств (в особенности в свете "ошибок", указанных Zhang), поэтому особо нового мне сказать пока нечего. Но в целом, по ощущениям, скорее китайцы не правы, а Tarjan и соавторы - вряд ли могли допустить настолько серьёзный промах. Я планирую начать с более современного анализа, проведённого в 2005 г. Seidel и Sharir ("Top-down analysis of path compression"), который, как утверждается, значительно проще доказательств Tarjan. |
|
+8
В википедии пишут, что статья Zhang не прошла peer-reviewing на конференции STOC 2008, после чего была удалена с сайта автора... Всё же, с вероятностью 99%, доказательство в ней неверно (хотя я проглядел его - доказывалось там как раз для худшего теста, не для случайного). |
|
+26
Я боюсь, таких тестов просто не может существовать - потому что невозможно отделить на практике константу от обратной функции Аккермана (которая <=4 для всех разумных ограничений). Это скорее теоретический вопрос - является ли время работы DSU настоящей константой, или всё же чрезвычайно медленно растущей функцией. Как отмечал в своей статье Тарьян, "DSU - это первый (и, возможно, последний) элементарный алгоритм, который имеет настолько сложную доказанную асимптотику". Будет символично, если и у этого уникума DSU асимптотика окажется "простой". |
|
+15
Насколько я понимаю, администрацией давно планируется сделать это, но т.к. хочется сделать не "как попало", а "хорошо", органично вписав это в весь кодфорсес - поэтому мы до сих пор не увидели этой фичи. Как временное решение можно взять любую вики, хоть мою - проблем никаких нет. Только будет выглядеть это немножко странно - разборы к контестам публиковать на стороннем ресурсе (хотя, если получится оформлять их качественно - почему нет?). Ну и ещё не надо забывать про нерусскоговорящих пользователей - для них e-maxx.ru фактически недоступен, и ссылки на алгоритмы давать не получится. |
|
+3
У нас тренировки идут обычными 5-часовыми контестами, процентов 70 из них командные, 30 - личные (хотя в разное время по-разному, иногда могут и одни личные тренировки остаться, а прямо перед соревнованиями - одни командные). Проблемсеты практически не решаем, только на ранней стадии обучения - когда изучается основная теория, и решаются задачи по этой теории. Полезность дорешивания, наверное, трудно отрицать, но если быть честным, мы не часто им занимались :) |
|
+13
Я на всякий случай написал письмо Marsha Poucher, она подтвердила, что сроки действительно такие: Yes, 13 - 18 May 2012 are the dates of the 2012 World Finals in Warsaw. We realize these dates may not be ideal for all but hope knowing the dates a year ahead will give time for all to make plans accordingly. |
|
+1
Угу, только что. ОК, понятно, в следующий раз клары к жюри надо писать сюда :-D |
|
+19
спасибо! теперь уже точно
|
|
+1
Кстати, в D палево в 10 тесте (если, конечно, это не какая-то магия у меня). Там как будто бы после самого теста идёт какой-то мусор - поэтому у меня был RE на 10 тесте (я обычно с мультитестом пишу решения). Жюри я писал об этом давно, они никак не отреагировали. |
|
+5
Да, с информацией по целочисленному ФФТ напряжёнка, но когда-то я находил это в одной книге. Сейчас попытался снова откопать - не смог :( Но, видимо, ответы на все вопросы и так уже получены |
|
+3
=============== Ну почему, кажется, можно и для любой ленивой динамики написать это. Просто надо сначала вызвать вычисление функции Гранди по всем переходам, а только затем, когда все вызовы уже сделаны, найти mex. Тогда глобальный массив будет в каждый момент времени использоваться только одним вызовом динамики, и проблем никаких быть не должно. |
|
+3
Ну если всё правильно написать, то можно обойтись одним таким глобальным массивом, так что будет O(N) памяти, а время - O(M) на одно состояние.
|
|
0
Или ещё проще - просто сделаем числовой used. Только хотелось, видимо, совсем арифметического решения без массивов - имхо, маловероятно, что такое решение есть. |
|
0
За O(M) можно: заведём большой глобальный массив размера N, в нём сначала поюзаем числа по каждому из M переходов, потом тупо найдём первое непоюзанное число (очевидно, оно будет не больше M) - это мы нашли mex, а потом ещё раз пройдёмся по всем переходам и снимем отметки из массива.
|
|
0
ну вот у меня кратко и написано там - это то, что набрано из чужих лекций и задач с проблемсетов. а с материалом по этой теме вообще проблемы, и именно анализа задач я нигде не видел - сам рад бы был почитать |
|
+3
ну вот есть небольшая подборка (если что-то получится понять из этого конспекта): |
|
+7
Внешние условия, которые заставляют игру быть ациклической, могут быть весьма сложными, и к делу не относятся. Как написал iensen, может быть ограничена сумма увеличивающих ходов. P.P.S. конвей, конечно, крутая книжка, но сказать откровенно - очень тяжело написанная, так что я не уверен, что с её помощью разобраться будет проще. |
|
+1
Спасибо! Мы тоже почти сразу поняли, как решать так, но посчитали и не стали писать :) Говорят, там есть решение за квадрат, но я не понял, какое |




