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

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

Небольшое отступление

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

Собственно идея

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

Зачем?

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

Детали

На данный момент представляю некую программу, которая будет аккумулировать в себе множество алгоритмов, с оценкой каждого (сложность изучения, необходимость, что либо еще?). Предлагать "персональный тренер" будет наиболее необходимые и легкие к изучению алгоритмы, а после изучения алгоритма — практика, задачи, также с их оценкой. На мой взгляд, будет полезна интеграция с крупными проектами по программированию (Codeforces, topcoder и тд), т.е. будут в одном месте доступны все задачи, разбитые не только по темам (графы, динамика, геометрия), а также конкретно указан алгоритм (при желании пользователя), для оттачивания определенного алгоритма. Приятным плюсом будет календарь контестов, с их оценкой. Ну и собственно оценки, о которых я упоминал не раз — я считаю что эти оценки должны выставляться самими пользователями.

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

Спасибо что дочитали до конца =)

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

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

Интересная задумка. Но:

Если вы совсем новичек в олимпиадах — есть несколько крайне популярных книг для новичков. Некоторые из них уже внутри себя имеют некое подобие разделения задач по группам и авторы предлагают какой-то подход к систематическому их решению. В этих книгах, как правило, есть и сами задачи и их разбор и общая теория (например "Меньшиков. Олимпиадные задачи по программированию", "Долинский. Решение сложных и олимпиадных задач по программированию","Скиена, Ревилла. Олимпиадные задачи по программированию")

Допустим, вы прочитали эти книжки. Уже какие-то знания есть. Стоит ли вам почитать более фундаментальные труды по конкретным темам (строки, графы, структуры данных) или проще начать участвовать в контестах (особенно если есть возможность по окончанию посмотреть чужие решения и обсудить с остальными участниками задачи)? А может лучше съездить на популярные тренировочные лагеря? Всё это очень сильно зависит от конкретного человека.

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

Codeforces, мне кажется, стал лучшей платформой для подготовки к олимпиадам. Тут и живое общение, и креативные задачи, возможность посмотреть чужие решения, теги для задач архива и тематические тренировки (которые мне особенно нравятся).

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

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

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

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

      Так что думаю, если этот прекрасный сервис появится — хуже не будет — особенно если он будет интернациональный и с хотя бы небольшой социальной составляющей — народу будет достаточно.

      Однако дальше-то собственно что? :)

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

        Сейчас мне хочется узнать мнение, есть ли смысл тратить время на эту затею. Если идею одобрят — то займусь сереьзенее и закину свои наработки на github к примеру. Вчера я уже делал небольшую часть этого, сегодня решил узнать мнение.

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

          Думаю не стоит тратить время.

          Что может произойти если ты начнешь писать эту штуку:

          • ты потеряешь интерес к СП, соответственно эта штука тебе не нужна будет.

          • ты потратишь все свободное время на эту штуку, в итоге твой уровень (как олимпиадного программиста) останется прежним

          Если ты не будешь писать эту штуку:

          • ты будешь больше решать, больше читать именно по СП, следовательно ты будешь больше знать и лучше решать задачи

          Вывод: Во втором случае у тебя есть не сгораемая сумма, а в первом нету.

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

            Прикладные "штуки" бывает иногда довольно интересно писать. В первую очередь нетривиальные. Особенно, если видишь, что результатом пользуются толпы людей :)

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

    Не в обиду сказано, но достаточно непривычно видеть, как зелёный участник даёт рекомендации синему =)

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

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

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

По-моему довольно интересно (если конечно это будет не программа, а веб-сервис). С удовольствием бы запустил такое у себя на informatics.

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

    Пока хочу все склеить на C#, дам на обозрение, а там если что перекрою на веб

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

    На самом деле есть еще одно использование такой программы: тренер тоже не всегда успевает уследить за всеми контестами, и не всегда с ходу может вспомнить ссылки на задачи на нужную тему. Система может высказывать какие-то рекомендации, которые тренер может использовать уже по своему усмотрению.

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

Казалось бы всё, за исключением классификации довольно просто:
1. загружаем в систему результаты ТК/КФ/Тимуса, других архивов
2. считаем статистику для каждой темы по параметрам: сколько решено, средняя сложность решённых задач, процент решаемости
2а. опционально можно прикрутить какую-то линейную оценку вроде рейтинга, завязанную ещё и на уровне других людей и, возможно, встречаемости таких задач на контестах
3. выводим эту табличку человеку с возможностью посортировать темы по вышеуказанным параметрам
4. ???
5. ПРОФИТ

Для мотивации можно хранить статистику суммы скиллов(или худшего скилла) и показывать её графиком.