Трек Engine. Советы Бориса Минаева

Мы постарались сделать так, чтобы квалификационный раунд трека по спортивному программированию помог вам познакомиться с платформой Codeforces. Решайте задачи на любом удобном языке программирования. Можно даже разобрать каждый отдельный тест в задаче без использования компьютера.

В отборочном раунде предстоит решить каждую задачу как можно скорее.

Финал соревнования пройдёт по стандартным правилам Codeforces: вы сможете получить баллы не только за быстрое и правильное решение задач, но и за нахождение ошибок в решениях других участников.

Борис Минаев

Задания приготовил Борис Минаев, руководитель Команды баз данных ВКонтакте.

Боря — чемпион мира по программированию ICPC 2015, 2 место VK Cup 2015
Боря — чемпион мира по программированию ICPC 2015, 2 место VK Cup 2015
  • Решайте задачи в порядке увеличения их сложности. Выбирайте ту, которую сдало больше всего участников.
  • Не зацикливайтесь на задаче, если она вам не поддаётся. Сразу поставьте себе ограничение: «Если не продвинусь в решении за 15 минут, то перейду к следующей».
  • Тестируйте решение перед посылкой. Обязательно запустите его на граничных случаях. Перед этим перечитайте раздел с ограничениями на входные данные.
  • Иногда идею решения можно придумать исходя из ограничений в условии. Например, у вас задача, в которой дано n объектов. Если n < 10, то, возможно, в решении необходимо перебрать все перестановки объектов. Если n < 20, то написать рекурсивный перебор за 2ⁿ. Если n < 1000, то придумать динамическое программирование за n². А если n около миллиона — скорее всего, нужно думать в сторону линейного решения.
  • Если вы получили WA, перечитали код несколько раз, а ошибку всё ещё не видите, то попробуйте написать более простое решение. Затем сравните на маленьких тестах, всегда ли исходное и новое решения выдают одинаковый ответ. Если же решаете задачу на неподвешенном дереве, то просто запустите решение ещё раз, но выберите другой корень.
  • Используйте среды разработки вроде CLion или IDEA. Они умеют находить стандартные ошибки вроде неинициализированных переменных или недостижимых кусков кода.
  • Добавляйте больше assert-ов в ваш код. Находить причину RE гораздо проще, чем WA.
4501 views·49 shares