|
0
Длинное GCD входит в разряд вещей, которые легко пишутся на С++. К сложным я бы отнес только длинное деление. |
|
+16
Перекладывать надо всегда самые тяжелые. Таким образом, по набору ходов можно понять, у кого будет самая тяжелая книга, у кого вторая по тяжести итд. Дальше, зная это, сортируем книжки и делаем ДП от двух параметров – текущая книга, сколько книг взято. |
|
+27
Задача Е ништяк. Идея простая, реализация сложная. По С интересно действительно ли можно доказать решение которое как бы за квадрат. Я думал над ним на контесте, но ничего в голову не пришло. |
|
+18
That was not me, that was homo_sapiens. |
|
-2
Вообще причин не выводить с 20 (я всегда делаю 18) знаками нету. Это одна из привычек которую хорошо в себе развить :о) |
|
0
Он новый выделит, старый-то он освободит. |
|
0
Ну тот факт, что вершина может быть продавлена, не гарантирует, что все хлопья с отрезка могут на нее упасть. |
|
+11
Проблема не в жаднике, проблема в том, что авторское решение неверно. |
|
0
Fourth 2 won’t break the scales. |
|
+37
My solution, which passes system tests, fails this test. |
|
0
Если дп возвращает true, как много хлопьев падает на уровень ниже? |
|
+12
Сначала писалось правильное решение с тернарным поиском, а затем его запуском понималось простое решение :о) |
|
0
В g++ вектор растет в два раза – только что проверил. В VS в презентации STL говорил, что у них растет в 1.5. Студии проверить нету. Я сам хоть локально и пишу на g++, отправляю всегда в студии, потому что I64d. |
|
+6
Мое очень субъективное мнение: на С++ программистов ниже спрос, чем на Java, но и предложение хороших С++ программистов гораздо ниже, чем хороших Java программистов. Мне смутно кажется, что если действительно хорошо знать С++, трудоустроиться как минимум не сложнее. |
|
+5
Наверное, когда говорят “используя O(1) памяти”, подразумевается, что структура дерева лежит в read-only памяти. Если это не так, обычно прямо указывают, можно ли дерево менять, и надо ли его в конце восстановить. Решение, когда дерево можно разрушить, можно сделать примерно так (тут я предполагаю, что указатель на вернишу и указатель на очередь занимают одинаковое количество памяти): Эта функция вся в хаках, и наверняка можно сделать без них, но она должна работать. Основная идея – мы обрабатываем списки детей (не важно массив это или вектор – главное чтобы по нему можно было итерировать). Мы складываем такие списки в стек. При этом мы исползуем первый элемент списка чтобы указать на следующий элемент стека. Основная идея алгоритма: взять список из стека. Сейчас это список содержит детей какой-то вершины (та вершина уже давно выведена, и нам не интересна). Обработаем вершины из списка. Для каждой вершины выведем ее и положим список ее детей на стек. При этом нам придется пожертвовать первым элементом этого списка. Положим этот первый элемент в список, который мы обрабатываем прямо сейчас, вместо элемента, который мы только что вывели. Когда один список вершин обработан, для каждой вершины этого списка ее список детей уже лежит на стеке, с утраченным первым элементом, а все эти первые элементы сейчас сложены в список, который мы только что обработали. Обработаем его снова, и снова, пока в нем ничего не останется. Ничего не осталось – берем следующего из списка. В такой реализации это квадрат по времени, но можно ужать до линии, если в начале каждой обработки откидывать все nullptr в списке в конец. По пямяти константа, но используется память дерева. |
|
+48
Второе ветвление функции Prob там в коде напоминает вот эту картинку:
|
|
Проблемы надо решать в порядке приоретитов. Твоя текущая проблема не научиться челенжить, а рассмотреть возможность перехода с ПО, которому уже декада стукнула. |
|
В админской комнате проскочил тест на полкуска, который убивает все решения, включая авторское Edges are 0-1, 1-3, 0-2, 2-3, 3-4, 4-5. Our solutions return 2 but correct answer is 1 |
|
Решаем динамикой по дереву. Считаем три значения
Но конечно переходы правильно вбить это то еще волшебство. |
|
На Jovfer →
Замена логического массива массивом множеств размерностью в 8 раз меньше, 6 недель назад
+6
Базовый тип в этом вопросе важен. Например, если использовать unsigned char, полученный код будет примерно на 10% медленее. |
|
+89
Когда я также пошутил, у моего комментария было +200 :о) |
|
+3
+/-1 in general doesn’t change odd/even for B%(A+1), if A is even. If B%(A+1) = 0, then (B-1)%(A+1) = A – oddness doesn’t change. |
|
0
You don’t have to lose first two games. If you win the third game, you will have a bag big enough to fit any presents from first two days, should you win any. |
|
0
(double post) |
|
+12
Let’s say the larger number is B, the smaller one is A. If A is odd, the case is pretty simple – after each turn B % 2 changes, so we win if and only if B%2 = 0. If A is even, we win if B % (A+1) is even. To prove it we need to prove that each winning state has a move to a losing state, and that any move from the losing state only goes to a winning state. If B % (A+1) is even, we can always make it odd by subtracting one, if B % (A+1) is not zero, or by subtracting A, if it is zero. That proves that from every winning state there’s a move into a losing state. If B % (A+1) is odd, any turn will make it odd. This can be proven by induction: If you subtract A^0=1, B % (A+1) will obviously become even. Let’s say we have proven that subtracting A^k changes oddness. Since subtracting A^k * (A+1) obviously doesn’t change oddness (since it is divisible by A+1), subtracting A^(k+1) = A^k * (A+1) — A^k does change it. That proves that from any losing state you can only move to a winning state. |
|
+8
Чтобы сымитировать конец файла с клавиатуры надо нажать Ctrl+Z. Тогда код, читающий с стандартного входа, поверит, что произошел EOF. |
|
+11
Для нечетных y легко понять, что достаточно чтобы x/y было четно (потому что четность x/y меняется каждый ход) Для четного – в конце остаток на (y+1) равен нулю, то есть четен, и это выигрышная позиция. Докажем, что нечетный остаток – это проигрышная позиция. Если сейчас остаток четный – его всегда можно сделать нечетным, сделав -1, если остаток не 0. и -y, если он ноль. Если сейчас остаток нечетный, то любой ход его сделает четным – это легко показать для хода в -1, остальные легко доказываются по индукцти (пусть мы доказали, что y^k меняет четность, также очевидно, что y^k * (y+1) не меняет четность, потому что делится на y+1, отсюда y^(k+1) = y^k * (y+1) — y^k очевидно меняет четность). |
|
+14
Я просто оставлю это здесь http://habrahabr.ru/post/139895/ |
|
+43
Писец, пацаны, после первого прочтения пытался понять почему прочитавшие плюсуют пост – повесть, по-моему, простенькая. Потом, прочитав первых пяти прокомментировавших под постом, понял прикол. Предлагаю продолжение писать про политику, предпосылки присутствуют. |
|
+16
Вообще работать с соображением, что левая граница включетельно, правая – нет, кажется удобнее, чем когда обе границы включены. Мне кажется что писать бинарный поиск с правой границей включенной – это все еще осталось со времен, когда все писали на паскале (и переходит из старых книжек / учителей старой закалки), на котором обе границы включительно кажется более естественными. |
|
+5
По хорошему среда должна подсказать тип i при наведении на нее мышкой. Я согласен с тем, что использовать auto либо когда код сокращается очень сильно, либо когда его избежать нельзя. Не могу не отметить еще, что фраза “я не согласен с Саттером” в вопросах, связанных с С++, звучит забавно :о) |
|
+8
Это похоже на правильное решение. Решение немного проще в правке. |
|
+8
В отладочном выводе видно, что j = 4, в коде видно, что перед этим происходит j–, а значит реально было заполнено пять элементов массива, заведенного на четыре. Или я не прав? :о |
|
+23
В очередной раз на конкурсе для программистов сайт подразуметвает, что программист использует windows – на ссылке для скачивания даже не указано для какой ОС скомпилированы лежание в ней бинарники (хотя, конечно, можно догадаться по расширению) |
|
-7
Откуда уверенность, что падает именно создание листа? В циклах ниже i3 указывает сразу на третий элемент листа, и дальше почти сразу сдвигается еще на один элемент вправо – то есть решение будет работать только если а) в листе есть хотя бы черыте элемента или б) вызов оператора ++ на итератор, указывающий на end, по прежнему указывает на end. Я бы скорее поверил, что ошибка кроется в этом цикле. В любом случае, на контейнеры, вообще говоря, надеяться можно, и глупо их не использовать. Надо просто ознакомиться с тем, как они устроены, и какие у них есть подводные камни (например, что удалять из вектора итерируя по нему опасно – хоть и возможно) П.С.
Это просто без комментариев. |
|
+41
Очень крутой сайт, очень понятно объясняеться. |
|
+8
Не могу не вызарить полное не согласие с вашей точкой зрения. |
|
0
Какие результаты дает clang на линуксе на такой же виртуалке? Мне кажется, что от компилятора должно мало зависеть в таком тесте. Какие результаты показывает stdio, если выполнять те же самые действия? |
|
На Alias →
Анонимусу должно быть разрешено участие в VK Cup, вступайте в группу vk.com, 3 месяца назад
+2
++ в пользу разрешения ему участвовать. Запрет на участие в официальном старте кажется как минимум странным. |
|
+82
Конечно, это не “конечно” |
|
+1
А чекеры для таких раундов пишутся на языке раунда? |
|
+62
Я уже тоже нервничаю :о |
|
+31
В этой задаче не было двоякого понимания условия. Я помню в седьмом классе на олимпиаде по математике была задача про рыцарей и лжецов, где каждый говорил “справа от меня сидит три рыцаря”. И на разборе один из неверно решивших ее участников с пеной у рта доказывал, что если лжец такое сказал, значит справа от него сидит три лжеца, а не по крайней мере один лжец. Схожая ситуация – человек не знает математику, и обвиняет организаторов математической олимпиады в том, что в условии задачу ему не разжевали. Если пишешь соревнование по программированию, разумно уметь мыслить логически. И не в седьмом классе мы уже тут в большинстве своем. |
|
0
В формате вывода по прежднему что-то странное. |
|
0
Да, имеллось ввиду как в рантайме определяется что вызвать. На самом деле примерно так и сделано как ты говоришь, только я не думаю, что таблица на самом деле ограницена. Просто если за ее пределы вылезти, скорее всего поймаешь AV попытавшись вызвать виртуальный метод через указатель. |
|
0
Мой любимый вопрос про указатели на функции-члены класса – это как отличить указатель на виртуальную функцию от указателя на невиртуальную функцию. Вот это код выводит: Последние две строки ожидаемы – все вызвалось верно. Первая строка говорит, что указатели на функцию обе 16 байт, вторая говорит, что последние восемь байт в обоих указателях не используются, в то время как первые восемь байт в первом указателе содержат номер в виртуальной таблице, а во втором – адрес функции. Так как тип у них одинаковый, вопрос – как при вызове компилятор понимает, вызывать по адресу или из таблицы? |
|
-8
Как же он все правильно сказал, если в том участке полиморфизм не работает, а его комментарий начинается с утверждения, что работает, а затем объясняет, почему он не работает. |
|
+1
Это круто – Visual Studio ведет себя так, как я ожидал бы чтобы код себя повел. Это, среди прочего, обозначает, что студия хранит размер объекта где-то в виртуальной таблице. А еще это отвечает на вопрос почему G++ падает сразу, не вызвав деструктор даже первого объекта. Потому что деструкторы вызываются начиная с последнего элемента (это хорошо видно в твоем выводе – указатели уменьшаются). |
|
+8
Догадайся убрать под спойлер хотя бы. В идеале конечно надо удалить комментарий. |
|
0
> "The book, Game of thrones is very good. Read it."
That is very true :) |
|
+4
Это есть в девятом осле. Каждая новая вкладка запускается в отдельном процессе. Если открыть вкладку перейдя по ссылке с уже открытой (открыв ссылку в новой вкладке), то новая вкладка запустится в том же процессе. Это будет видно в строке с вкладками -- вкладки в одном процессе показываются одним цветом, вкладки в другом процессе -- другим цветом.
В Firefox над этим работали, не знаю закончили ли. |
|
+1
In the case above stand is a noun, not a verb.
|
|
-7
Мне нравится блок над блоком Participating Companies на странице CodeSprint :о)
|
|
Я тебя подловил скорее на том, что ты не заметил, что я был не прав :о)
|
|
(Что-то здесь было написано не то :о)) |
|
> sort(a, a+strlen(a));
Чистейший си. |
|
0
> но потом программировать также удобно, как и на VS.
Дебаггер если вообще не нужен, то да. Но тогда зачем вообще среда разработки. Проще тогда уж поставить Qt Creator. |
|
+24
Например, в std::vector сложность ни то пуша ни то чего-то в этом роде в дебаге в 2010 версии квадратичная. Приоритетная очередь построена поверх вектора, так что если у вектора в дебаге действительно пуш квадратичный, то и у приоритетной очереди в дебаге пуш будет квадратичный. Почему это так, и как эту очень полезную фичу выключить, объяснялось в этом видео:
http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Advanced-STL-3-of-n Кстати, чувака на видео зовут Stephan T. Lavavej, и я сячитаю, что иметь такое ФИО инженеру в STL очень круто :о) |
|
+29
Удивительно, что я первый, кто скажет тебе, что ты мудак, твой пост -- высер младенца, и 58 плюсов твоему посту поставили мудаки :о) upd: наверное надо мотивировать пока я не потерял весь вклад. есть два момента. первый -- администрация любого бесплатного ресурса по определению никому ничего не должна. они тратят свое время и, видимо, деньги, и это дает им право удалять любые темы, и не дает им обязанности разбираться с каждым недовольным пользователем. второй момент -- когда человек хочет перестать пользоваться ресурсом, он просто его закрывает и удаляет из закладок. пишут, что уходят, когда хотят привлечь всеобщее внимание и показать какая администрация плохая, не идет на контакт. Если администрация пойдет на контак сейчас, она разбалует разбалованных пользователей только еще сильнее. |
|
0
решение |
|
+8
Уже миллион раз обсуждали. Те, кто пока еще участвует или тренируют, имеют тенденцию говорить, что конечно влияние большое, даже по 15 пунктов могут тебе привести в доказательство. А другие еще добавят, что вот многие алгоритмы уже применили на практике сложные, например бинарный поиск и расстояние между строками. Поэтому ты вообще как отзанимаешься СП, ты там на работе будешь самый крутой. По существу на твой вопрос: Во многих больших компаниях (читать: гугл) на интервью спрашивают задачки типа олимпиадных, так что пройти туда будет ненулевой шанс, вероятно, выше, чем если потратить тоже самое время на какой-нить опенсорс. А если будет еще и медалька или какой онсайт как результат подготовки, то еще и резюме твое из кучи других они заметят с большим шансом. А когда уже гугл тебя в кремниевую долину привез, там дальше уже тебе будут все возможности открыты, уже можно себя проявить. Добавлю, что достаточного количества реальных примеров того, как олимпиадник на работе поднимается по карьерной лестнице быстрее коллег, чтобы это было статистически значимым, в мире не наблюдается. |
|
+4
> more better
Света из Иваново? |
|
Я могу это обосновать. По логике ты всегда сначала уберешь дыры в координатах, чтобы все иксы и игреки шли подряд -- эта часть не зависит от выбора в столбик или в строчку. Затем надо всех собрать в центральную строчку, или в центральный столбец, и стоимость этого равна.
Если это не так, обвалится куча решений, которые, например, забывают сортировать вектора с координатами (у меня в комнате таких по меньшей мере два). |
|
0
> one can transform Z<->prefix in O(n)
How? |
|
0
I use Qt Creator too. Built-in fake vim mode is very handy, and debugger is quite good.
|
|
+7
Не могу не попросить писать "задача" вместо "таска" :о)
И еще -- "Так же добавлена еще одна акция" -- пришлось переключаться в английский чтобы понять что это значит :о |
|
+22
For my timezone that is the best time possible :)
|
|
0
> Иначе сразу можно сказать, что ответ найден. Этот подстрока является и префиксом, и суффиксом, а так же суффиксом префикса длины p[n], который находится где-то внутри строки. Это решение работает за O(n). Красиво :о E -- отличная задача, но не на 2.5-часовой контест :о |
|
0
Это если под Windows сидишь.
Хотя я вот пишу под убунтой, но отправляю все равно под MSVC, потому что тут GCC из MinGW -- как-то нет, спасибо... |
|
+3
> Suffix Array has complexity NlogN
That's improper suffix array. Proper Suffix Array is linear :) |
|
0
Как уже выше говорили, функция ответа от длины не монотонна. А n log n с хешами и так заходило. |
|
+38
Время, которое я потратил на каждую из задач
A -- 31.13 B -- 29.11 C -- 28.11 D -- 27.48 Что-то не так со сложностью :о) |
|
+11
По длине строки. Точнее, все строки, для которых суффикс равен префиксу, уже сложены в массив и аккуратно отсортированы, и бинарный поиск идет по индексу в массиве.
Проще код посмотреть :о) |
|
+6
Сначала за линию найдем все префиксы, которые равны суффиксам, а потом уже среди них бинпоиском найдем такой, который встречается еще и в строке.
|
|
+6
У меня волшебный бинпоиск, ему класть на монотонность :о)
|
|
+6
И упасть на претесте 6 :о)
|
|
+7
Думаю, нужно заметить, что он умножает на знаменатель от другого ответа. Поэтому с этой точки зрения все верно.
|
|
+14
114 немного больше 110. В остальном хороший ответ
|
|
0
Там можно идти из двух углов. Если ты встречаешь единицу, ты обязан сходить в нее, потому что все клетки выше и правее (ниже и левее соответственно для другой половины) уже рассмотрены и единиц не содержат.
|
|
0
Может еще хеши пройдут :о(
|
|
+23
А мы на С++ мучаемся с fmod :(
|
|
0
Там другая крайность -- или я косорукий, или как показать содержимое строки в отладчике? :о
|
|
+9
Удалить папку с варкрафтом не вариант?
|
|
+1
Как я уже говорил (тема эта тут всплывает по меньшей мере третий раз), эффективный способ -- это написать простенькую систему имитации контестов (что не должно быть сложно для программиста, правильно? потом эта система, как показывает опыт, отлично защищается как бакалаврский диплом) -- буквально чтобы она компилировала и запускала задачи, и показывала что-то типа монитора, потом качать задачки с тестами с американских полуфиналов сначала, с польских полуфиналов, потом школьные олимпиады, и нарешивать их.
Решать с тимуса лично я не советую. Имхо, это почти пустая трата времени. Еще ахмед али публиковал тут ссылку на свой новый сервис -- по-моему это что-то как раз похожее. Советую обратить внимание тоже. |
|
-5
А я когда играл -- тащился от Nerubian Weaver.
|
|
+4
Я вот слушаю театр трагедий, вот там техника :о)
|
|
0
-- дабл пост -- |
|
0
Не хочу показаться формалистом, но вообще-то отменили летнее время, а не зимнее, и зимнее сделали на час больше, чем оно было. |
|
+1
В QT Creator это как бы есть. Но не очень удобно.
Говорят что в Эклипсе если использовать стандартный отладчик, а не DSF, то тоже есть. Может в Индиго и в DSF добавили. |
|
+5
Думаю нет никаких проблем обсуждать AI challenge во время контеста
|
|
+3
+
|
|
0
Если делать правильно, то получится то что нужно. Алгоритм: на i-ой итерации менять i-ый элемент со случайным элементом из множества [i,n]. Очевидно, что такой алгоритм не меняет первые n элементов после n-ой итерации, а потому может быть остановлен сразу после нее. В первых n элементах он будет содержать ответ на поставленную выше задачу.
|
|
0
Ну мы же random_shuffle после n-ной итерации останавливаем, от величины m асимптотика вообще не зависит. |
|
+24
Внезапно пост mihnevsev начинает обретать смысл, да? :о)
|
|
+8
> Доступны Windows XP и Fedora 15, на компьютерах установлены обе системы. Более того, во время отсылки решения можно выбирать, под какой ОС будет тестироваться ваше решение.
А как же Мак для желающих? :о) На самом деле очень крутое нововведение -- по логике вещей только так и должны происходить соревнования. А что стоит на федоре из сред? Eclipse, QT Creator? |
|
0
Тоже спрашивали -- проблемы с запуском в песочнице
|
|
0
Я письмо писал с банкета, еще под впечатлением, поэтому оно было по манере подачи материала похоже на этот пост :о)
В кратце я ей указал на: 1. Очень скучное открытие далеко от отеля. У меня есть фотография, на которой видно, что во время открытия все либо спали, либо втыкали в телефон, либо общались, никто открытие, конечно, не слушал. И оно длилось о-о-очень долго. И уйти нельзя -- отель далеко. 2. Машинки, которые мы собирали из конструкторов, которые вручили потом детям из детского дома. Это было настолько тупо, что сложно передать обычным языком. Одна из машинок развалилась прямо на сцене, когда ее взяли, потому что их собирали для фана, абы как. Если такие щедрые, подарили бы детям сами конструкторы, а не собранные машинки. Ну и там некоторые дети были уже лет по 15. Мелкие-то радовались и такой машинке, а на лицах больших детей явно читалось непонимание. 3. Закрытие, на котором волонтеров назвали поименно, а команды -- нет. Передача медалей сразу после спуска со сцены, потому что одного комплекта не хватало :о) 4. На банкете банально не было мест. К половине столов не пускали, потому что они зарезервированы для организаторов. Банкет был далеко от отеля -- если мест не хватило, то уйти тоже нельзя. Там еще были вещи по мельче, например 300 человек, одновременно подходящих к гардеробу, или едва говорящие по английски волонтеры, делающие объявления в автобусах. |
|
+14
После Финала в Харбине я написал Марше Путчер о "высоком уровне", на котором финал был проведен.
Она сказала, что если команда из моего региона пройдет еще раз на финал, она будет мне благодарна, если я с этой командой не приеду :о( |
|
+58
Да я тоже говорю охренели уже, задачи дают с подводными камнями!
|




