17 июля 2012

Что мы имеем на данный момент...

Попробую провести самоанализ своих "успехов" :-)

Имеем:
  • На данный момент мы имеем человека, который на 2-3 курсе старался активно заниматься решением олимпиадных задач с архива Тимуса в offline (то есть решать не в рамках реальных или виртуальных соревнований, а спокойного решения). 
  • Уровень знания английского вполне позволяет не испытывать серьёзных проблем при переводе задач.
  • Далеко не такая хорошая мат. база, которую крайне желательно иметь олимпиадникам.
Хочется:
  • Подготовиться к успешному (а судя по epic fail выступлению всех команд центрального региона на полуфинале в Питер в следующем году поедет около 4 команд и это должны быть только реально сильные команды из имеющихся) выступлению на четвертьфинальных соревнованиях центрального региона NEERC. Войти в Top 3 :-)
  • В случае выполнения  - продолжить участие в других соревнованиях (не только студенческих) по программированию для достижения успехов и там.


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

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

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

В результате очевидными способами срочного исправления ситуаций видятся следующие:

  1. Перестать решать всякий трэш в offline. Его надо уметь писать "в темпе" на соревнованиях.
  2. Изучить неизученные темы из структур данных и алгоритмов, дискретной математики и связанных областей, за исключением наверно геометрии, т.к. она попадается не особо часто, да и знаний курса школьной-университетской геометрии в основном бывает достаточно.
  3. Стараться по-максимуму участвовать в соревнованиях и решать там задачи в порядке сложности, читать разборы задач, которые не решил и "разумные" по сложности задачи досдавать.
Для решения пункта 2:
  • Я нашёл конспекты НИУ ИТМО по алгоритмам и дискретной математике в wiki. Там, мне кажется, в нужном объёме даются как основы, так и детали реализации.
  • Классические книги типа Кормена - это тот минимум, который нужно знать. Я его читал, но не целиком. Есть главы, к которым стоит вернуться.
  • При прочтении достаточной теоретической литературы можно обратиться к сайту e-maxx.ru, где в основном даны реализации и применения алгоритмов разной сложности и разных тем.
  • Для тренировки offline решения сложных задач, мне кажется, отлично подходят архивы, где есть возможность выборки задач по темам. Мне пока больше всего приглянулся архив Codeforces. Там постоянно пополняющийся архив задач, есть теги, есть подобие "сложности" задач, можно читать авторские разборы, смотреть исходники интересных решений топов, находить интересные моменты  в послеконтестовом обсуждении. Так же на Codeforces очень много блогов, в которых затрагиваются разные олимпиадные тонкости в языках и алгоритмах. И вообще интересный и встесторонний ресурс.
Для решения пункта 3:
  • На том же Codeforces публикуются анонсы не только локальных соревнований, но и соревнованиях сторонних ресурсов. Всегда можно быть в курсе событий. 
  • Для прорешивания уже прошедших соревнований можно воспользоваться подпроектом "Тренировки-Codeforces", где выкладываются архивы многих соревнований для прорешивания.
  • К сожалению, поучаствовать в соревнованиях Открытого кубка и других, которые проводятся на SnarkNews возможности нет из-за отсутствия сектора как такового.
  • Можно присоединиться к проекту "Яндекс-Тренировки", о котором рассказывали на полуфинале.
В общем, все условия для выполнения поставленных задач есть.
Далее в блоге буду писать о том, что будет реально происходить в рамках подготовки к последнему ACM ICPC NEERC Quaterfinal.

Комментариев нет:

Отправить комментарий