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

Автор map, 13 лет назад, По-русски

Здравствуйте! Я хотел бы затронуть тему о развитии сильных спортивных программистов. Многих интересует, как люди попадают на финал ACM ICPC или, например, получают 2200+ на Codeforces/Topcoder. В связи с этим, прошу всех, кому есть что сказать по данной теме, а в особенности вышеуказанную категорию людей, ответить на вопросы:

  1. Сколько времени вы занимаетесь СП?
  2. Что Вам дало наибольший толчок и когда?
  3. Какие ресурсы-архивы сейчас решаете (и как бы могли их охарактеризовать: acm.sgu.ru, acm.timus.ru, codeforces, topcoder и т.п.)?
  4. Какой язык программирования и среду сейчас используете (по возможности с кратким (или полным) комментарием)?
  5. Сколько часов в неделю вы тратите на СП (в том числе постоянны ли ваши тренировки, или они сезонные и направлены для успешного выступления на определенном соревновании)?
  6. Какой способ подготовки к серьёзным личным соревнованиям вы предпочитаете?
  7. Что Вас больше всего мотивировало во время вашего развития и мотивирует по сей день?
  8. Определяющие факторы для достижения успеха в СП?

9*.Дополнительные комментарии по этой теме.

На codeforces.ru есть много отдельных постов, в какой-то мере отражающих тематику, но мне хотелось бы все собрать в одном месте.

Единственная смежная содержательная запись в блоге, которую я знаю.

Просьба особо не флудить.

Примечание: Используется сокращение "СП" — "спортивное программирование".

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

»
13 лет назад, # |
Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится

Тут тема подготовки олимпиадников раскрыта гораздо лучше, чем по указанной в посте ссылке.

И вообще, красные, вы где? Почему никто не отвечает в теме? Интересно же почитать!

»
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Подобная тема обсуждалась на топкодере.

»
13 лет назад, # |
  Проголосовать: нравится +23 Проголосовать: не нравится

Я начну.

  1. Я занимаюсь с первого курса универа, то есть чуть меньше 3 лет.
  2. Наибольший толчок дают сборы по программированию — на них внезапно легко учатся сложные алгоритмы и удается решать задачи, на которые раньше не поднималась рука.
  3. Я решаю в основном задачи из архива CodeForces — мне кажется, это оптимальный выбор, учитывая, что можно искать подходящие задачи по тэгам/количеству решивших и читать разбор.
  4. Я пишу на C++ в Visual Studio 2010, потому что там удобный отладчик. Было время, что писал на Java в NetBeans — в Java есть плюсы, но для некоторых задач приходится изобретать велосипед (например, вручную реализовывать next_permutation или писать lower_bound), поэтому остановился на C++.
  5. От 0 до 20 часов. Во время подготовки к полуфиналу решали по 2 5-часовых контеста в неделю + личные тренировки примерно каждый день.
  6. Читать емакс, решать задачи, писать регулярно контесты. Но надо понимать, что просто нарешивание легких задач в архиве ничего не даст — поэтому не берите с меня плохой пример. Лучше решить одну сложную, чем 5 простых — простые во время тренировок вообще наверное лучше пропускать, а чтобы хватка не пропала, решать их на контестах.
  7. Раньше хотелось поехать на турнир куда-нибудь (поехали в Архангельск), потом на сборы (поехали в Харьков), потом получить футболку (получил футболку Code Jam), потом попасть на полуфинал (попали в этом году), потом попасть на онсайт (попал на КРОК), теперь хочется получить красный цвет и попасть на серьезный онсайт (Russian Code Cup, например). Так что тут главное ставить перед собой более-менее достижимые цели — они мотивируют. А если, будучи зеленым (ну или фиолетовым, как я), мечтать сразу попасть на финал, то это хорошее желание, конечно, но от этого ничего не изменится и мечты останутся мечтами.
  8. Постоянно тренироваться, не бояться решать сложные задачи, сильная теоретическая подготовка тоже не будет лишней.
»
13 лет назад, # |
Rev. 2   Проголосовать: нравится +6 Проголосовать: не нравится

1) Год и 2 месяца

2) Бессоница и депрессии =)

3) Решаю acmp.ru из желания прорешать весь =)

4) С++/Geany — минималистичненько

5) Часов 5-10 — на решение задач и контестов, не регулярно, сейчас вообще сессия на носу.

6) Не готовлюсь — мой уровень не позволяет мне рассчитывать на победу, просто решаю контесты.

7) Мне это нравится :) UPD: и ещё хочу выиграть футболочку =)

8) Способности к придумыванию алгоритмов + опыт

9) За год ничего не умеющий математик с уровня зелёного может раскачаться до желтого уровня без особых усилий. На топкодере несколько сложнее — почти весь этот год был синим, только сейчас удалось выбраться в желтые.

»
13 лет назад, # |
Rev. 2   Проголосовать: нравится +7 Проголосовать: не нравится
  1. 3 года.
  2. Прочтение некоторых глав Кормена — ДП, графы, структуры данных + нарешивание задач на тимус, это было где-то на втором, третьем году занятия СП.
  3. Сейчас ничего не решаю, раньше тимус, сферу (советую).
  4. В команде принято писать на C++ (VS), на личных соревнованиях я использую что-то из этого : C++(VS), Java(Idea, Eclipse).
  5. Во время семестра в неделю проводим два пятичасовых контеста + личные соревнования занимают около 5 часов.
  6. Особо не готовлюсь, максимум могу прорешать предыдущую версию личного соревнования.
  7. Выход в финал.
  8. Понятия не имею.
»
13 лет назад, # |
  Проголосовать: нравится +22 Проголосовать: не нравится
  1. Около пяти лет
  2. Никогда не замечал ярких вспышек прогресса :)
  3. Сейчас решаю что придётся, раньше много времени проводил на тимусе. Пытался acm.sgu.ru решать, но меня дико бесило (да и сейчас бесит) Accepted, написанный красным цветом. У всех свои тараканы, мне вот дружелюбность и адекватность интерфейса подавай. :)
  4. Dev-cpp с гнутым компилятором 3.4.2. Отладчиком не пользуюсь, поэтому проблем с ним не испытываю. Язык — исключительно c++, ибо на яве даже простые вещи требуют вбивания многочисленного кода. Да, и dev-cpp в сравнении с той же студией — офигенно быстрый и лёгкий, самое то для олимпиадных задач; не выдерживаю длительной компиляции. На соревнованиях без dev-cpp пишу в фаре.
  5. Когда как. Иногда по 8-12 часов решаю в сутки, иногда пару месяцев ни строчки кода.
  6. Отсутствие направленной подготовки как таковой. Я устаю от серьёзной подготовки, она приводят к длительным спадам навыка. Например, после каждых петрозаводских сборов у меня не получается нормально решать где-то пару месяцев.
  7. В 11 классе мотивировало халявное поступление в университет. В универе и сейчас движет идея неких полуфантастических бонусов, которые мне даст СП и успехи на соревнованиях; например, крутую работу и "буду клёвым кодерком — всё сложится". Ну и без футболок тут никак. =)
  8. Гибкость ума и длительные тренировки. И если первое исправить мы не в силах, то остаётся второе.

Теперь более подробно о некоторых аспектах.

Тимус в качестве архива подходит отлично. Берём задачу, думаем, решаем. Крайне полезен в начале олимпиадной "карьеры", когда несложные идеи приводят к успеху. Архив Codeforces — если хочешь научиться писать код. Не советую во многом из-за соблазна подсмотреть тест спустя часы мучений. Учиться находить косяки самостоятельно — бесконечно полезный скилл на соревнованиях. Тренировки на Topcoder — если хочешь научиться думать. Рекомендую решать в топкодерском стиле: убиваемся 75 минут, затем тестим, отлаживаем решения, учимся на ошибках, читаем чужой код, разбираемся. Обычно десятка таких тренировок хватало, чтобы следующий SRM показался немного проще предыдущих.

Мнение касательно отладчика: лучше не надо. Дебаг-аутпут учит задавать программе правильные вопросы и искать косяки в тех местах, где они действительно есть. Уверен, что именно отказ от отладчика накинул мне немного мозгов и сотню-другую баллов на топкодере.

О тренировках: можно рассматривать долгосрочные этапы тренировок, можно краткосрочные. В долгосрочных основная цель — добиться максимального роста. В краткосрочные важно заметить, что изменение уровня скилла идёт по синусоиде: спад-подъём, спад-подъём. Будет здорово, если ты поймёшь, как уменьшить и сократить этап спада и увеличить интенсивность и длительность этапа подъёма. Для этого нужно грамотно чередовать нагрузки и отдых. Каждый человек в этом плане индивидуален; мне, например, больше всего подходит такой режим: месяц интенсивных тренировок, месяц лёгких тренировок, месяц отдыха и занятия смежными областями. Подъём ощущается как раз после отдыха.

Всё написанное выше — исключительно моё мнение, поэтому не надо спорить, особенно на темы отладчик/не отладчик, студия/не студия, c++/не c++. С удовольствием почитаю мнения по-настоящему сильных олимпиадников.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится

    Около пяти лет — у тебя, кажется, пять лет назад был диплом на всеросе :)

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +4 Проголосовать: не нравится

      ого, это я такой старый уже? ну да, выходит у меня лет шесть более-менее серьёзных тренировок и лет девять — просто знакомства с программированием на уровне условий и циклов :(

»
13 лет назад, # |
Rev. 2   Проголосовать: нравится +56 Проголосовать: не нравится
  1. Почти пять лет, с 10 класса.
  2. Первый толчок в 11 классе, когда начал решать онлайн соревнования лично и прорешал acmp.ru (TopCoder и т.п.). Второй в университете, на первом курсе. Когда общаешься и тренируешься много с людьми выше тебя(и не только) уровнем много чего нового узнаешь. Последующие: каждые сборы в Петрозаводске. Ну и конечно немало математики научили думать.
  3. Сейчас просто решаю SRM и Раунды на TC и CF. Очень редко решаю задачи в Online Judge. Разные другие онлайн соревнования (codechef, usaco.org, ...) Командные тренировки в университете, Opencup.
  4. Java, Eclipse и IntelliJ Idea.
  5. Дважды в неделю командные тренировки во время учебы. Бывает Opencup, CF и TC. От 6 до 18 часов где-то.
  6. Специально к какому-то конкретному соревнованию не готовлюсь.
  7. В школе поступление в ВУЗ. В ВУЗе медаль на ACM ICPC. Рейтинг на TC и CF, сувениры от codechef, проход на онсайт -> призы и повидать новые места. И вообще, это просто интересно.
  8. Работа над своим умением решать задачи. Трата кучи времени на тренировки. Участие в различных соревнованиях, набираться опыта.
  9. Учите математику, без нее никак:)

»
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
  1. Суммарно 8 лет, более или менее серьезно в 2007 — 2009 (включительно)
  2. Видимо, решение 100 простых задач на Тимусе (2007). Писал быстро и подряд.
  3. Архивы специально не решаю очень давно. Решал Тимус.
  4. C++. Считаю, что все недостатки С++ исключительно в высоком пороге вхождения и необходимости самодисциплины.
  5. Постоянных тренировок никогда не было, кроме Петрозаводских сборов. В целом — по наличию желания и свободного времени. Перед ЧФ проводили две разминочные командные тренировки на задачах разных ЧФ, совместно командами Самарского ГАУ и Самарского ГУ.
  6. Отдых, отдых и еще раз отдых. Вообще, лучший способ подготовиться к соревнованию — два-три дня отдохнуть. Правда, очень редко получается.
  7. Эпический слив ЧФ в 2006 году и умелое подстегивание со стороны тренера. Сейчас — просто интересно.
  8. Специфическая (близкая к математической) интуиция, дисциплинированность при программировании, интерес к теме.
»
13 лет назад, # |
Rev. 3   Проголосовать: нравится +31 Проголосовать: не нравится

Я ветеран ACM ICPC 2010 года, с тех пор осмысленно не тренируюсь, поэтому отвечу на вопрос, как тренировалась раньше.

  1. С 14 июня 2003 года.
  2. Изменение командной стратегии в 2008 году.
  3. Закрытые саратовские сайты, acm.sgu.ru. На topcoder в студенческие годы почти не участвовала, codeforces тогда не было.
  4. Visual Studio C++. Часто пишу в Far.
  5. 10 часов (две командные тренировки в неделю).
  6. Из серьезных личных соревнований готовилась в свое время только к РОИ. Самая главная часть подготовки — прорешивание предыдущих РОИ и похожих контестов. Там можно достичь неплохих результатов даже при слабом знании алгоритмов и навыках реализации, важно правильно рассчитать свои силы в написании частичных решений. Лучше браться за такие решения, которые наберут много баллов и их реально написать. Даже если знаешь правильное решение — не обязательно его писать :)
  7. Работа в команде. Мне с ней здорово повезло. Организация работы команды меня интересовала гораздо больше, чем непосредственно задачи и алгоритмы. В период участия в acm личные соревнования вообще не были приоритетом. Сейчас не могу уйти из СП, потому что круг общения не позволяет.
  8. Мозги. Их можно развивать.

9*. Не стоит пытаться повторить чей-то путь к успеху, лучше найти свой.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +19 Проголосовать: не нравится

    Изменение командной стратегии в 2008 году.

    А можно поподробнее?

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +27 Проголосовать: не нравится

      После летних петрозаводских сборов мы приняли решение перераспределить роли в команде (Дима пишет код, Стас за ним следит, я думаю над задачами). После этого у нас сразу произошел скачок в результатах и захотелось активно тренироваться дальше. Прошли упаднические настроения, вызванные сливом полуфинала 2007 года.

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится +21 Проголосовать: не нравится

        На самом деле Наташ это очень клево выглядело. Я когда был на первом курсе как раз постоянно наблюдал за вами: вы решали прямо как конвеер. Дима и Стас (пишут, дебужат), а ты думаешь.

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится +3 Проголосовать: не нравится

        У вас было четкое разделение — два хардкорных кодера и математик?

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
            Проголосовать: нравится +11 Проголосовать: не нравится

          Не совсем. У нас скорее была давно известная в теории СП "столичная система" :) С тем небольшим отличием, что Стас не только придумывал тесты, но еще валидировал идею и следил за написанием кода. Крутым кодером был (да и сейчас является) только Дима.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +6 Проголосовать: не нравится

    С 14 июня 2003 года.

    Можно узнать, откуда такая точная дата? :)

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +2 Проголосовать: не нравится

      Хорошая память может...я вот помню точный день, когда я начал заниматься СП....15 января 2009 :)

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      Может начало занятий по проге в каком-нить кружке при СГУ?

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится +6 Проголосовать: не нравится

        Да, это действительно начало занятий на кружке.

»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Опрос, вообще-то, социологический.

»
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Ссылка на "Единственную содержательную запись в блоге" не работает...

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Исправлено,спасибо!

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится

    А по теме:

    1. Начал заниматься СП месяца 3-4 назад, сейчас заканчиваю 10 класс, так что можно сказать, что мой Путь только начинается.
    2. Чтение книг и бесплатные онлайн-курсы Stanford'a
    3. Пока определил для себя три ресурса при помощи которых буду пытаться встать на ноги: codeforces, topcoder, timus.
    4. Писал какое-то время на Java, позже переключился на C++, все таки мне кажется что для СП он больше пригоден. В качестве редактора использую Vim и Xcode, для запуска дебагера.

    Для тех кто сейчас в таком же положении как я, могу посоветовать книгy, которая по-моему мнению, позволит набраться нужного жаргона и основных алгоритмических фишек Programming-Challenges — Steven Skiena. Сам читаю ее сейчас, большой плюс книги в том, что после многих тем, автор приводит пример real-world проблемы, которая решалась именно при помощи алгоритма/техники, разобранной только что.

    P.S хотелось бы видеть больше ответов опытных людей, и их рекомендации =)

»
12 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится
  1. Почти 8 лет.
  2. Конец первого курса универа, осознание того, что мне очень нравятся командные контесты.
  3. Архивов сейчас не решаю, в школе решал timus, в универе — командные тренировки на snarknews-серверах, потом яндекс-тренировки.
  4. Использую C++ (так исторически сложилось), но планирую перейти на Java, по причине отсуствия сколь-либо приличных IDE для C++ под линукс и отсутсвия хороших C++-IDE в принципе (а также по причине наличия "плагина Егора" для Idea).
  5. В среднем — часа 2-3, наверное (тренировок у меня сейчас уже нет, конечно; раньше были постоянные командные тренировки).
  6. Предпочитаю не готовиться к серьёзным личным соревнованиям, а участвовать в них just for fun :) Если вы ещё не retired в отличие от меня — то лучше направить силы на подготовку к командным соревнованиям, а не к личным (но если после этого ещё остаётся время и желание — то что-либо лучше прорешивания practice room'ов на CF/TC придумать трудно, имхо).
  7. Спортивный интерес, fun, замечательные (большей частью) сокомандники.
  8. Мотивация, общение с умными людьми (но мотивация важнее).
  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    10ый вижак весьма годен, вроде. Под линем запустить его — проблема, но всегда можно поставить VM.

    Пользуясь случаем — если есть желающие написать такой плагин для плюсов, можно собраться и написать.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      Меня после Idea очень бесит, что во всех C++-ных IDE какое-то идиотское нагромождение эвристик вместо честного парсинга программы (10ый вижак — не исключение). Ну и понятно, фич там гораздо меньше (о чём можно говорить, когда даже refactor->rename нормально работающего нет :) ).

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится +7 Проголосовать: не нравится

        Думаю, грамматика плюсов даже теоретически не позволяет честно парсить программу и, например, переименовывать переменные (даже просто конкатенация имен с использованием ## делает однозначное переименование невозможным). Полнота по Тьюрингу шаблонов, видимо, не позволяет делать статический семантический разбор иначе как нагромождением эвристик.

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
            Проголосовать: нравится +5 Проголосовать: не нравится

          Не подскажите, где можно почитать про "конкатенация имен с использованием ##"? Или вкратце что это такое.

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

          Ну хотелось бы, чтобы это работало хотя бы для обычного кода (даже пусть без директив препоцессора скажем, кроме #include'ов)

          Все равно, как я понимаю, от них чаще стараются отходить (Правда, многие СП как раз юзают сокращения типа forn(), но это уже другой вопрос.)

          • »
            »
            »
            »
            »
            »
            12 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Для обычного кода неплохо работает VisualAssistX. Также автокомплит и средства рефакторинга мне нравятся в QtCreatorе. Но до инструментов jetbrains им все равно далеко.

            • »
              »
              »
              »
              »
              »
              »
              12 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              Правильно ли я понимаю, что это плагин который работает только для платных версий(или кроме Express есть бесплатные?) VS, которые еще и работают только под платной ОС? Печально, если так.

              На самом деле, в NetBeans, который я юзаю, средства рефакторинга в каком-то виде есть (тот же rename variable), даже работает относительно нормально, хотя иногода зацепляет лишнее, но его там куда меньше. Например, кнопочка generate constructor и выбор списка аргументов — весьма крутая вещь, не реализована

              • »
                »
                »
                »
                »
                »
                »
                »
                12 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится

                Да, на express он не встанет. Можно попробовать получить студию professional через microsoft dreamspark.

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        После idea будет бесить любая среда разработки :) А вообще выше сказано верно — синтаксис плюсов слишком сложен для написания полноценных инструментов рефакторинга, как в других языках.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Я понимаю, что мнение стрёмного синего вряд ли интересно, но я брался за написание плагина для VS 2010.

      В принципе, пишется несложно, но нужно разобраться в том, как это делается. Теоретически, можно писать коллективно (SVN, Git).

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      хотел бы спросить: а почему именно плагин? Почему бы не cli программулину, котарая парсит и инлайнит код? Кажется имея такую программу легче сделать плагин для любого блокнота(тем более во многих уже есть плагин и средства запуска сторонних инструментов).

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Даешь C/C++ плагин для Idea!

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Тока он не работает, а когда работал был кривой, и ни фига не умный(как другие проекты JetBrains)

»
12 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится
  1. Почти 2 года.
  2. Видимо, подготовка к всероссу, год назад.
  3. Только контесты.
  4. C++, среда NetBeans. Командные контесты на Java в Идее, изредка вижак. Решать более менее пофиг на чем, просто некомфортно писать на Jav'е когда нет человека, который скажет, как посортить кастомные объекты/вывести дабл с 2 знаками после запятой или т.п. Мжет быть перейду на Java, ибо Idea.
  5. 5-10 часов.(читать 1-2 5часовых старых контеста) + личные контесты
  6. Писать другие личные соревнования. Понятия не имею, насколько это полезно или не не полезно, более или менее полезно, чем другие тренировки, но это интересно.
  7. Когда-то 60к и поступление(точнее не столько поступление, поступил бы я и так, сколько, отсутствие необходимости запариваться по этому поводу (а также возможность кидать фразы типа "понабрали по ЕГЭ")). Сейчас только рейтинги, футболки и удовольствие
  8. no comments.
  9. Не нужно искать чего-то в контестах, кроме самих контестов. Это не самый легкий способ получения чего бы то ни было полезного. А вот бесценные приятные часы они приносят, это правда.

»
12 лет назад, # |
  Проголосовать: нравится +35 Проголосовать: не нравится
  1. Занимаюсь уже 8 лет. С 8 класса. Более или менее осознанно с 1 курса, т.е. 4 года.
  2. Наибольший толчок дало то, что на 1 курсе осознала, что моя команда довольно слабая на общем фоне -> надо заниматься.
  3. Сейчас закрытые саратовские сайты и немного Codeforces.
  4. VC++. Удобно, легко, все, что мне нужно, там есть.
  5. Тренировки сезонные. Зависят от сезона сессии: есть она или нет. В семестр трачу около 3,5+(3,5)+5+(5)=17: 1 личный и 1 командный контест точно, и, может быть, еще 1 личный и, если есть кубок, командный.
  6. Для меня спортивное программирование — хобби, не вижу смысла осознанно перед соревнованием готовиться к нему. Заниматься нужно все время, а не второпях за 2 недели активизировать себя к соревнованию.
  7. Когда видишь задачу — ее надо решить. Не можешь решить — надо придумать. Не можешь придумать — надо придумать.
  8. Упорство, умение думать, способность, в какой-то степени нестандартно мыслить, возможность заниматься, желание заниматься, удачное стечение обстоятельств. Любовь к спортивному программированию:) без этого ты не сможешь уделять этому столько времени, отказываться от многого, терпеть поражения и снова, и снова идти на тренировки.
»
12 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится
  1. Первое знакомство было осенью 2004 года (в 9-ом классе), а серьезно стал заниматься с 2-го курса, т.е. уже почти 3 года полезной деятельности.
  2. Два жестко слитых контеста на 2-ом курсе (KBTU Open и 1/4 финала). Это меня серьезно подстегнуло и я стал усиленно тренироваться и участвовать в контестах.
  3. Решаю в основном виртуальные 5-ти часовые контесты, Opencup и Codeforces с Топкодером.
  4. Java с Eclipse
  5. Часов 10 в среднем уходит. Но все зависит от настроения и степени занятости.
  6. Насчет личных соревнований не знаю, а вот к командным — прорешивание виртуальных 5-ти часовых контестов командно.
  7. Нравиться решать задачи и получать Accepted. Еще видимо врожденное честолюбие, и с недавних пор жажда пройти в финал ACM ICPC.
  8. Необходим какой-никакой, но базовый талант. И много усердия и работы, чтобы этот талант развить.
»
12 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
  1. Узнал еще в 10 классе, это было в 2005 году, а заниматься начал 2 года назад. До этого просто ходил с командой и ничего не делал.
  2. Когда совсем ничего не знал, решал халяву с тимуса и читал емакс. До уровня фиолетового прокачало только так. После этого настолько больших толчков не было, поднимаюсь постепенно и медленно.
  3. Codeforces, Topcoder, Opencup, Snarknews. Иногда решаю что-нибудь с Тимуса. Topcoder, кажется, больше всего задействует мозг. А самые веселые контесты — от Снарка.
  4. В команде это C++ и Visual Studio. Сам обычно пишу на Java в Eclipse — мне кажется, что на Java я пишу быстрее, т.к. на C++ можно забыть объявить переменную или что-то в этом роде, и не знать об этом до попытки компиляции. Очень расстраивает. А IDEA расстраивает тем, что после нажатия на кнопку запуска проходит секунд 5-10, прежде чем программа запустится.
  5. Никаких специальных тренировок у нас, к сожалению, нет — только онлайн-контесты. Наверное, поэтому и прокачка медленная?
  6. По-моему, вопрос очень странный. Нет никакого способа.
  7. Сначала хотелось перестать быть хуже некоторых знакомых, а теперь цель — попасть в финал. А еще есть маечки. А еще это просто интересно.
  8. Надо разбираться в математике, а, скорее, интуитивно понимать, как там все устроено.
  • »
    »
    12 лет назад, # ^ |
    Rev. 4   Проголосовать: нравится +2 Проголосовать: не нравится

    2010-ая студия подчёркивает ошибки красной волнистой линией, так, как Word например.

    UPD. это я к тому, что в 2010-ой она подчеркнёт необъявленную переменную.

    на C++ можно забыть объявить переменную или что-то в этом роде, и не знать об этом до попытки компиляции

»
12 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится
  1. С 9 ноября 2008 года.
  2. Когда я увидел по телику что команда СГУ выиграла кубок мира по программированию. Это было как известно в 2006 году.
  3. Не хочу рассказывать планы.
  4. C++ + Far + Colorer. На работе пишу в Idea, поэтому на контестах когда надо могу и на Java написать.
  5. Прямо сейчас очень мало (сессия и еще разная фигня). Вообще тренируюсь очень много. В период перед четвертьфиналом и когда есть время пишу минимум 2 + 2 полных АСМ контеста (личный, командный) + Codeforces + Topcoder + Codechef + Opencup + все о чем узнаю.
  6. Решение кучи контестов + дорешивание + решение задач в архив + книги. Очень важно уметь решать математику, чего я пока не умею.
  7. Желание стать лучше.
  8. Задротство + талант + удача. Хотя последнее преследует тех у кого есть первые два. 9*. Главное АСМ. Остальные соревнования это подготовка к АСМ.
  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Ты затронул такую тонкую тему: "рассказывание своих планов". Лично мне рассказывание планов сильно помогло. Я попал в очень хорошую конкурентную среду, и сильно поднялся по сравнению с тем, что было в начале (съездил на РОИ, правда, там всё слил).

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +6 Проголосовать: не нравится

      Проблема в том, что сейчас почти все кодеры делают практически одно и то же: решают одни и те же контесты, одни и те же проблемсеты, читают одни и те же книги, пишут одинаковой стратегией. Поэтому нужно оставить каждому немного пространства, чтобы думать самому, экспериментировать и пр.

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Насчёт стратегии не согласен. Что в личных соревнованиях, что в командных — она сильно отличается у разных людей.

        Особенно сильно это заметно в команде. Наша команда (школьники) отработала стратегию на отлично, это нам сильно помогло. Мы потратили на это очень много времени и сил, и, к сожалению, впустую.

        В этом году я хочу собрать новую команду в ВУЗ'е, придётся начинать всё заново.

        Стратегия — это слишком индивидуальная вещь, у всех похожая, но такая разная.

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
            Проголосовать: нравится +12 Проголосовать: не нравится

          Почему ты думаешь, что отработал стратегию на отлично, если результата не получилось?

          • »
            »
            »
            »
            »
            »
            12 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Результата не получилось не потому что стратегия плохая, а потому что мы тупые. Это две большие разницы.

            Во время контеста мы очень быстро нашли несколько халяв, но внезапно выяснилось, что система тестирования (Барнаул forever) не работает. Её включили на 15ой минуте, тогда мы сдали две задачи чисто. Потом ещё одну.

            Мы очень долго не видели Питерский монитор, что опять же сыграло злую шутку (не знали, за что стоит браться). В нашей стратегии всё-таки была зависимость от монитора и на тренировках она работала.

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

      • »
        »
        »
        »
        12 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Да.. нечто подобное я уже некоторое время вынашиваю. Что если начать взращивать программиста совершенно отвлечённо от текущих контестов, не выставлять его лишь для того, чтобы посмотреть какого он уже уровня или фофан. Тогда, возможно, развиваясь в своей среде он не сможет понять, насколько он крут в сравнении с остальными, а если при этом постоянно делать уклон на то, что он ещё не достаточно крут, то это может стать причиной его постоянной мотивации расти вне зависимости от текущего уровня относительно других. Если же он увидит что и так уже крут, есть риск, что расслабится. То есть в тихую мне кажется может быть проще стать туристом, чем постоянно соревнуясь публично... надо лишь правильно подбадривать мыслями о недостаточной крутости. Возникает вопрос о том, что конкуренция — хорошее средство роста и мотивации.. тогда можно пойти дальше и улучшить этот метод: пусть будет группа людей, которая соревнуется только сама с собой, но не соревнуется в паблике, тогда все представители смогут расти вне зависимости от всего общества и подбадриваемые конкуренцией. Минус: нужно долго ждать, чтобы имел смысл выставлять по такой методике кодеров на соревнования.

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

          Ну, например, я, если бы не учасвствовал в соревнованиях, быстро бы забил ибо было бы совctv не интересно. Так что тут все же все индивидуально.

          • »
            »
            »
            »
            »
            »
            12 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Да, возможно, это ещё один минус. Тут, наверное, могут помочь только внутригрупповые плюшки... едва ли многим хватит "вы станете крутыми кодерами через 2-3 года, если будете меня слушать".

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    Задротство и талант это, безусловно, очень нужная и важная в СП вещь, но удача не всегда напрямую зависит от них. Иногда так называемая "удача" может в какашку опустить долгие и упорные тренировки и талант, а может и наоборот сделать так, что ты выступишь просто на невозможном для себя уровне. Так что это всё-таки отдельный пункт (хотя, конечно, без первых двух она вообще не состоятельна).

»
12 лет назад, # |
  Проголосовать: нравится +62 Проголосовать: не нравится

Пишу как было в 2008, когда это было релевантно.

Сколько времени вы занимаетесь СП?

5 лет

Что Вам дало наибольший толчок и когда?

Не было толчка

Какие ресурсы-архивы сейчас решаете (и как бы могли их охарактеризовать: acm.sgu.ru, acm.timus.ru, codeforces, topcoder и т.п.)?

Только внутренний архив в формате 5-ти часовых контестов.

Какой язык программирования и среду сейчас используете (по возможности с кратким (или полным) комментарием)?

Visual Studio для полуфинала (отладчик нереально крут и быстр), после полуфинала пересел на Eclipse для финала. Язык -- С++.

Сколько часов в неделю вы тратите на СП (в том числе постоянны ли ваши тренировки, или они сезонные и направлены для успешного выступления на определенном соревновании)?

5 часов четыре-пять раз в неделю (ровно один контест в день)

Какой способ подготовки к серьёзным личным соревнованиям вы предпочитаете?

5-ти часовые личные контесты. Мы делали и командные (тоже пятичасовые), я не помню как часто. Вероятно, ближе к выездам.

Что Вас больше всего мотивировало во время вашего развития и мотивирует по сей день?

Мотивировала медалька и двери, которые она открывает.

Определяющие факторы для достижения успеха в СП?

Очень много тренировок.

9*.Дополнительные комментарии по этой теме.

В общем мое мнение всегда было такое: надо писать только в формате АСМ 5-ти часовых контестов без дорешек (потому что в день Х надо будет писать АСМ 5-ти часовой контест, и дорешать будет нельзя). Дорешки -- это спорный вопрос, я согласен. Фанатичную прорешку архивов считал и считаю неэффективной. В подтверждение тому -- большинство людей в топе Тимуса не круты. Мой тренер учил меня, что важно не уходить с пятичасовой тренировки раньше (потому что надо тренировать выдержку -- если тренироваться по 2 часа в день, то и на выезде перегоришь через два часа). Мне приходилось писать по 4-5 дней в неделю чтобы поднять нужный уровень, но я в курсе что люди становились чемпионами тренируясь только по разу в неделю.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    Где взять овер 9000 задач = 9 задач в контесте  ×  4 контеста в неделю  ×  50 недель в году  ×  5 лет?

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +6 Проголосовать: не нравится

      Тоже мне проблема, задачи найти:)

      http://neerc.ifmo.ru/school/io/index.html — вот тут порядка 1000 задач.

      http://neerc.ifmo.ru/school/archive/index.html — вот тут еще... Точно больше 1500.

      http://informatics.mccme.ru/moodle/ — тут тоже, даже если отбросить те, которые попадались выше, и те, которые "а+б", то больше 1000 явно наберется.

      Дальше склеить вместе http://acm.tju.edu.cn/toj/, http://poj.org/, http://acm.zju.edu.cn/onlinejudge/, http://acm.hdu.edu.cn/ и остальных "китайцев" — еще несколько тысяч задач.

      Дальше, есть еще http://uva.onlinejudge.org/ , всеми забытая, на которой можно накопать еще 4значное число задач, которые не проскакивали на названных мною раньше сайтах.

      http://www.spoj.pl — тут тоже очень-очень много авторских задач, которые нигде больше не попадались. Тоже, думаю, больше 1000. Хотя и не гарантирую.

      Большая часть этих материалов была доступна и 4-5 лет назад.

      Так что найти задачи — не проблема :D Даже если их реально надо было бы в таких количествах, как Вы написали.

      Ну разве что проблема с повторами, да и то в целом "лечится" просто.

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится +5 Проголосовать: не нравится

        внутренний архив же...

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          А, ок) точно)

          По крайней мере я ответил на другой вопрос — "Где найти задачи для тренировок"...

          Ну да, по поводу внутреннего архива — самому интересно стало. Понятно, что оценка в 9000 задач завышена в несколько раз, но все равно получается немаленький сборник.

          • »
            »
            »
            »
            »
            »
            12 лет назад, # ^ |
              Проголосовать: нравится +5 Проголосовать: не нравится

            Про 9000 я, понятно, пошутил :)
            Можно вот так: 1500 Петрозаводск + 1500 school.ifmo + разные официальные контесты и наберётся почти сколько надо
            Хотя, наверное, есть способы проще

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Уже этот вопрос всплывал. Архивы Петрозаводска выдаются после сборов участникам, их можно где-то находить. Школьные олимпиады -- это очень крутой источник задач (они очень сложные, и часто нестандартные), тоже все доступны. Польские полуфиналы -- неплохой источник задач, тоже доступны. Американские полуфиналы и другие американские задачи -- это отличный источник задач, в которых нет ограничений (такое на финалах, по крайней мере раньше, было обычным делом, и хорошо иметь такой опыт тоже). Это уже будет хорошее количество задач.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      2 контеста в неделю на contest.yandex.ru (да ещё и с разборами задач) + opencup'ы (0.5 в неделю) + тренировки на neerc.ifmo.ru/trains + командные контесты на всяких uva.onlinejudge.org. Должно хватить :)

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +13 Проголосовать: не нравится

    не первый раз читаю мнение, что хорошо решать 5 часов без дорешивания. Ок, раз люди добиваются успеха следуя этому правилу — значит работает. Но не понятно почему. :) Вот решаешь контест. X задач решил, Y нет. В следующий раз будет нечто похожее из Y — опять не решишь? Откуда берется прогресс?

    • »
      »
      »
      12 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

      На самом деле выносливость -- весьма важный фактор во время контеста. Когда я писал по 5 часовому контесту 2 раза в неделю -- концовка контеста становилась всё более и более продуктивной.
      После года перерыва от контеста оставалось 2-3 часа полезного времени и пришлось заново набирать форму...
      Относительно скиллов решения задач: если у тебя на 5 часов серьёзный контест где 1-2 халявы, то это не сильно будет отличаться от дорешивания. А дорешивание, кажется, привывает скилл решать задачу(пусть и сложную) в фоновом режиме за 10 часов...

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +10 Проголосовать: не нравится

      Дорешка -- это действительно спорный вопрос.

      Дорешка наверное полезна, чтобы научиться решать все типы задач.

      Но мне кажется, что я набрал уровень, которого достаточно, чтобы решать любые задачи, достаточно быстро -- максимум год. Но уровень, которого достаточно чтобы решать любые типы задач -- это далеко не тот уровень, который нужен, чтобы получить медальку. Дальше надо развивать умение быстро понять какой алгоритм прячется за задачей (это на дорешке никак не развивается), научиться быстро и без ошибок их реализовывать (дорешка ничего не привносит в этом плане), научиться правильно рассчитывать свои силы на контесте (не залипать на три часа на задаче) -- тоже дорешка никак не поможет.

      Проблема, которую я вижу в дорешке, заключается в том, что есть опасность привыкнуть к тому, что задачу можно дорешать в дополнительное время. Надо привыкать решать за пять часов.

      Сам я конечно дорешивал все равно -- потому что иногда просто не получается взять после контеста и оставить задачу не решенной :о)

      • »
        »
        »
        »
        12 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Позвольте полюбопытствовать, со скольки задач на среднестатистическом петрозаводском контесте вы начинали?
        И через какое время после интенсивного годичного курса подготовки это было?
        P.S. промазал; должно быть комментом сюда

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        " научиться быстро и без ошибок их реализовывать (дорешка ничего не привносит в этом плане)" Лично мне кажется, что если дорешка что-то и дает, то именно умение реализовывать.

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

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

          • »
            »
            »
            »
            »
            »
            12 лет назад, # ^ |
              Проголосовать: нравится +18 Проголосовать: не нравится

            Дорешка руку набивает. У меня, конечно, относительно скудный опыт, но идеи быстрой и простой реализации различных методов гораздо чаще приходят в голову во время спокойной дорешки, а не когда на контесте пишешь самое тупое из того, что работает.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

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

      Вообще я думаю , что если во время решения даже 1 задачи поставить на неё ограничение по времени, то от этого будет больше пользы, чем от решения с отвлечениями (например разговоры , тв, музыка и и.т.п). Потому что программист будет знать, что у него время ограничено и соответственно осознавая это он не будет отвлекаться, он будет решать , временя-то идёт. Но в этом методе есть одна проблема, то что программист просто может забить на это ограничение, с мыслями о том что это ничего не решает , никакого приза за неё не будет, никакой отбор решив её сейчас и с этим ограничением он не пройдёт. В таком случае решающему поможет только его сильная сила воли и осознавание того что это тоже важно.

      А прогресс от метода тренировок 5-ти часовыми контестами идёт думаю так: Сначала программист успевает решить только 2 лёгкие задачи, а на третью времени не хватает. Потом уже со временем он успевает решить и 3. Он тренируется и уже 3 у него идут легко, но над 4 он успевает только подумать. И уже с тренировками у него идёт и 4. и так далее. Есть конечно множество других причин прогресса , но думаю эта основная.

      • »
        »
        »
        »
        12 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        "Решение с отвлечениями" выглядит неправдоподобно.
        Обычно, если уж взялся решать, то хочешь или поскорее закончить 1/3/5/10/20 задач или решить как можно больше за 1/3/5/10/20 часов. Если есть желание отвлечься, то следует сначала сделать все побочные дела, а потом уже садиться за решение задач.
        То же самое с "установкой ограничений на задачу".
        Про 2 задачи на контест тоже выглядит смешно(хотя и для многих правда). Для раскачки на начальных уровнях нет ничего полезнее, чем решать тимус(или другой OJ).

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

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

          Про "установка ограничений на задачу" лично я думаю что такой вид решения задачи имеет эффет по-больше, чем другой вид, в котором нет ограничений.

          • »
            »
            »
            »
            »
            »
            12 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            ИМХО, без минимальной дисциплины никакого развития в СП. Получается СП как хобби.
            Совсем не понимаю, чем отличается процесс решения с "установкой". Только тем, что после Х времени забиваешь на задачу невозможно провести за одной задачей больше Х времени?

            • »
              »
              »
              »
              »
              »
              »
              12 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              Хорошо, если на задачу тратиться не слишком мало времени (т.е. нет "чтения решения без процесса самостоятельного поиска решения"), но и не слишком много (т.е. нету неоптимальной траты времени на слишком сложные задачи.

              Отклонение в обе стороны негативно влияет на результат. Если найти золотую середину и установить такое ограничение, то результаты должны улучшаться значительно быстрее.

            • »
              »
              »
              »
              »
              »
              »
              12 лет назад, # ^ |
                Проголосовать: нравится +8 Проголосовать: не нравится

              Читаешь задачу , в глове сразу оцениваешь её и определяешь примерное время Х (ко мне в голову оно обычно само приходит после прочтения задачи) , за которое ты думаешь , что сможешь решить её. И потом стараешься решить эту задачу за время Х. Если не успел решить за Х, можешь забить на неё , можешь прочитать решение, а можешь добавить ещё несколько минут к Х-су.

              Я читал где-то , если у человека есть кое какое задание, которое ему надо решить и если поставить на него ограничение по веремени, например Х дней/часов/минут, то он выполнит максимум из всего что он может за эти Х дней/часов/минут. Я не знаю доказано это или нет.

              • »
                »
                »
                »
                »
                »
                »
                »
                12 лет назад, # ^ |
                  Проголосовать: нравится +16 Проголосовать: не нравится

                Можно ещё всё-таки сдать задачу, а потом посмотреть, как время, потраченное на неё, соотносится с X. Полезно собрать такую статистику, а потом понимать, что первая мысль "я сдам эту задачу за X минут" на самом деле обычно означает, скажем, "за 2X минут", и соответствующим образом корректировать стратегию на соревнованиях.