Небольшое отступление
Наверное каждый участник данного сообщества хочет достичь определенных успехов в спортивном программирование, а что бы их достичь нужны постоянные тренировки, причем не только в решение постоянных контестов, а также изучение новых алгоритмов и умение их применять. Самый лучшая ситуация если у вас есть знакомы человек опытнее вас, который может уделять вам время, так сказать быть вашим тренером, но чаще всего такой возможности нет (по крайне мере у меня и моих знакомых).
Собственно идея
Сделать такую программу\веб сервис, который "тренировал" тебя, а именно предлагал к изучению наиболее актуальные алгоритмы и задачи на их применение. Предупреждал о различных контестах, наиболее подходящих тебе по уровню.
Зачем?
На мой взгляд, человеку без опытного наставника тяжело выбрать те алгоритмы, которые наиболее необходимы для изучения в данный момент, найти достаточное количество задач именно на эту тему. Выбирать контесты для тренировок (которых великое множество).
Детали
На данный момент представляю некую программу, которая будет аккумулировать в себе множество алгоритмов, с оценкой каждого (сложность изучения, необходимость, что либо еще?). Предлагать "персональный тренер" будет наиболее необходимые и легкие к изучению алгоритмы, а после изучения алгоритма — практика, задачи, также с их оценкой. На мой взгляд, будет полезна интеграция с крупными проектами по программированию (Codeforces, topcoder и тд), т.е. будут в одном месте доступны все задачи, разбитые не только по темам (графы, динамика, геометрия), а также конкретно указан алгоритм (при желании пользователя), для оттачивания определенного алгоритма. Приятным плюсом будет календарь контестов, с их оценкой. Ну и собственно оценки, о которых я упоминал не раз — я считаю что эти оценки должны выставляться самими пользователями.
Ну вот вроде и все на данный момент, очень хочется услышать ваши мысли, замечания, предложения по данной теме.
Спасибо что дочитали до конца =)
Интересная задумка. Но:
Если вы совсем новичек в олимпиадах — есть несколько крайне популярных книг для новичков. Некоторые из них уже внутри себя имеют некое подобие разделения задач по группам и авторы предлагают какой-то подход к систематическому их решению. В этих книгах, как правило, есть и сами задачи и их разбор и общая теория (например "Меньшиков. Олимпиадные задачи по программированию", "Долинский. Решение сложных и олимпиадных задач по программированию","Скиена, Ревилла. Олимпиадные задачи по программированию")
Допустим, вы прочитали эти книжки. Уже какие-то знания есть. Стоит ли вам почитать более фундаментальные труды по конкретным темам (строки, графы, структуры данных) или проще начать участвовать в контестах (особенно если есть возможность по окончанию посмотреть чужие решения и обсудить с остальными участниками задачи)? А может лучше съездить на популярные тренировочные лагеря? Всё это очень сильно зависит от конкретного человека.
Так к чему я — для старта, ИМХО, вполне достаточно учебников, а для дальнейшего развития видимо нужно больше живого общения. Программа вряд ли сможет за вас сделать оптимальный именно для вас выбор. Поэтому, лучше по-активнее участвовать в обсуждении контестов с реальными участниками (ну или попросить кого-то быть тренером) и сами поймёте — в каком направлении стоит двигаться.
Codeforces, мне кажется, стал лучшей платформой для подготовки к олимпиадам. Тут и живое общение, и креативные задачи, возможность посмотреть чужие решения, теги для задач архива и тематические тренировки (которые мне особенно нравятся).
Сугобо личное мнение: К книгам по програмированию у меня как то не сложилось, прочитать какой алгоритм — да, читать полностью книгу не могу, становиться скучно, видимо не совсем новичок. Codeforces замечательный спору нет, благодаря ему у меня очень хорошо поднялась скорость печати, я научился быстро кодить то что я знаю, а вот узнавать новое не получается. Ведь порой чтобы понять разбор — необходимо знать некоторые алгоритмы.
Ну тут я поддержу автора — если у одного человека "не сложилось" с книгами, но быть может нравится решать подряд задачки с Project Euler — то вероятно найдутся и другие такие.
Так что думаю, если этот прекрасный сервис появится — хуже не будет — особенно если он будет интернациональный и с хотя бы небольшой социальной составляющей — народу будет достаточно.
Однако дальше-то собственно что? :)
Сейчас мне хочется узнать мнение, есть ли смысл тратить время на эту затею. Если идею одобрят — то займусь сереьзенее и закину свои наработки на github к примеру. Вчера я уже делал небольшую часть этого, сегодня решил узнать мнение.
Думаю не стоит тратить время.
Что может произойти если ты начнешь писать эту штуку:
ты потеряешь интерес к СП, соответственно эта штука тебе не нужна будет.
ты потратишь все свободное время на эту штуку, в итоге твой уровень (как олимпиадного программиста) останется прежним
Если ты не будешь писать эту штуку:
Вывод: Во втором случае у тебя есть не сгораемая сумма, а в первом нету.
Прикладные "штуки" бывает иногда довольно интересно писать. В первую очередь нетривиальные. Особенно, если видишь, что результатом пользуются толпы людей :)
Не в обиду сказано, но достаточно непривычно видеть, как зелёный участник даёт рекомендации синему =)
К сожалению, совсем нет времени из-за работы участвовать в контестах, да и закончил основное обучение я год назад. Но на себе проверил — отсутствие активного участия в контестах и реального общения, никак не компенсируется OffLine решением задач или чтением книг... То есть я точно знаю — как не надо заниматься, если хочешь стать крутым. Отрицательный опыт — тоже опыт :-)
По-моему довольно интересно (если конечно это будет не программа, а веб-сервис). С удовольствием бы запустил такое у себя на informatics.
Пока хочу все склеить на C#, дам на обозрение, а там если что перекрою на веб
На самом деле есть еще одно использование такой программы: тренер тоже не всегда успевает уследить за всеми контестами, и не всегда с ходу может вспомнить ссылки на задачи на нужную тему. Система может высказывать какие-то рекомендации, которые тренер может использовать уже по своему усмотрению.
Казалось бы всё, за исключением классификации довольно просто:
1. загружаем в систему результаты ТК/КФ/Тимуса, других архивов
2. считаем статистику для каждой темы по параметрам: сколько решено, средняя сложность решённых задач, процент решаемости
2а. опционально можно прикрутить какую-то линейную оценку вроде рейтинга, завязанную ещё и на уровне других людей и, возможно, встречаемости таких задач на контестах
3. выводим эту табличку человеку с возможностью посортировать темы по вышеуказанным параметрам
4. ???
5. ПРОФИТ
Для мотивации можно хранить статистику суммы скиллов(или худшего скилла) и показывать её графиком.