Блог пользователя muxecoid

Автор muxecoid, история, 3 года назад, перевод, По-русски

Уже давно я использую codeforces на интервью для отсеивания кандидатов.

Я часто слышу рекомендации как улучшить читабельнось условий задачи. Одна из частых рекомендаций "Добавьте примеры недопустимого ввода".

Например для задачи 1469A - Правильная скобочная последовательность
Можно было бы использовать такие примеры

Неправильный ввод — слишком много скобок

  1
  (())

Неправильный ввод — слишком мало скобок

  1
  (????????????????

Неправильный ввод — слишком много случаев

  1337
  .....
  .....
  .....

Полный текст и комментарии »

  • Проголосовать: нравится
  • -36
  • Проголосовать: не нравится

Автор muxecoid, история, 3 года назад, По-английски

First 3 problems were kinda easy. Grime Zoo also felt easy at first. Quickly wrote a quick DP solution and only 40 minutes after the match I finished debugging the last bug. When problem is all about 01 you have many places for off by one mistakes. I must practice more.

My general idea for Grime Zoo was simple, at any specific point in string you have given number of question marks. Any fraction of them could be used as 1s. So you store the lowest number of comments obtainable for each number of 1s and advance from there.

And even version after additional debugging passed only the pretests.

Полный текст и комментарии »

  • Проголосовать: нравится
  • -30
  • Проголосовать: не нравится

Автор muxecoid, 8 лет назад, По-английски

Just something curious that I just noticed during practice.

std::map::upper_bound returns iterator to the first element with key strictly greater, than argument.

By intuition of symmetry one could expect std::map::lower_bound to return iterator to the last element with key strictly less, than argument. In fact it returns iterator exactly one after it.

What is the reason for this asymmetry? This is because map::end() points at one position after the last element, if we search for element greater than largest key in map upper_bound has a reasonable iterator to return map::end. map::begin() points at first element. To provide API symmetry lower_bound would need to return map::prebegin() which does not exist in standard. This way asymmetry between begin() and end() leads to asymmetry between lower_bound() and upper_bound().

What other cases of asymmetry are there in STL?

Полный текст и комментарии »

Теги c++, stl
  • Проголосовать: нравится
  • -16
  • Проголосовать: не нравится

Автор muxecoid, 8 лет назад, перевод, По-русски

После четырёхлетнего перерыва я не в лучшей форме. Раньше бывал только на топкодере. Кажись у топкодера сейчас не лучшие времена, решил прийти сюда. Некоторые наблюдения и выводы.

  1. Индекс первого элемента — 1 Каждый раз теряю на этом время. Перейти, что-ли, на Паскаль? ;)

  2. Стандартный ввод/вывод topcoder даёт всё через STL/C#/Java контейнеры. Тут надо попарсить. Вспоминаем scanf и cin.

  3. Много решений Если есть несколько решений вывести любое. Если мой результат не соответствует примеру не факт, что он ошибочен.

  4. Отсчёт времени с начала соревнования А не с момента открытия конкретной задачи, как на топкодере. Возможно стоит прочести все задачи с самого начала и решить в каком порядке их решать.

  5. Нужен нормальный IDE Работа с ideone.com не комфортна и медленна. Попробуем CodeLite в следующий раз.

  6. Нужны snippets bigint для С++ нужен. Какая нибудь утилита для ввода-вывода. Кусок кода использованный более чем в двух соревнованиях должен быть обобщен и сохранен в папку ;)

Полный текст и комментарии »

  • Проголосовать: нравится
  • +13
  • Проголосовать: не нравится