Що робити, якщо у Вас виникло бажання стати учасником олімпіад зі спортивного програмування, але ви сумніваєтеся у своїх силах і можливостях?
Дізнайся з нашої статті в чому сила програмістів-олімпіадників і де можна відточувати навички алгоритмічної майстерності.
На запитання студентів ХНУРЕ відповідає переможець всеукраїнських змагань LUCKY NUMBERS CONTEST 2023, аспірант кафедри ШІ факультету КН .
— Чи є якесь обмеження у віці для занять спортивним програмуванням?
— У деяких олімпіадах (включно з однією з найпрестижніших — чемпіонатом світу ICPC) є обмеження за віком — потрібно бути не старше 23 років. Але існує і безліч змагань без вікових обмежень, наприклад, чемпіонати великих компаній, такі як Google Code Jam, Facebook Hacker Cup, або ж регулярні раунди на онлайн-платформах Code forces і AtCoder. Плюс ніхто ж не забороняє займатися спортивним програмуванням суто для себе, щоб дізнаватися щось нове, розвивати своє алгоритмічне мислення. Тож починати в будь-якому разі ніколи не пізно, головне мати бажання.
— У чому переваги учасника змагань з програмування від звичайного програміста?
— Основна відмінність у тому, що олімпіадник глибше розуміє, як влаштований той чи інший алгоритм зсередини, а отже, може оцінити ефективність різних підходів і вибрати оптимальний. Також він не боїться і вміє вигадувати нестандартні розв'язки задач, тоді як звичайний програміст здебільшого віддасть перевагу готовому, перевіреному підходу, який далеко не завжди може виявитися найкращим.
Ще однією перевагою є вміння швидко знаходити помилки в коді, адже в олімпіадах доволі часто доводиться це робити в умовах обмеженого часу, а часто ще й без доступу до самого комп'ютера (наприклад, у командних змаганнях дають лише один комп'ютер, тож для його ефективного використання помилки завжди шукають очима на видрукованому коді, доки однокомандник набирає розв'язок іншої задачі).
— Чи можете порадити якісь сервіси, які допоможуть у вдосконаленні навичок алгоритмічної майстерності?
— На самому початку я б порадив зареєструватися на платформах https://codeforces.com/ і https://atcoder.jp/, де регулярно проводяться особисті змагання всіх рівнів складності (для новачків відмінно підійдуть div.3 раунди на Code forces і beginner contest-и на AtCoder). Крім цього, має сенс вирішувати який-небудь великий архів завдань у порядку зростання складності. Для мене це був все той же Code forces.
Також у міру вивчення нових алгоритмів має сенс створювати свою невелику бібліотеку, яку можна використовувати, якщо в завданні трапляється якась стандартна техніка. Для тестування такої бібліотеки чудово підходить сайт https://judge.yosupo.jp/, де зібрано більшість стандартних завдань, плюс є можливість дивитися код найефективніших рішень інших учасників.
З корисних сервісів я б ще виділив https://clist.by/ - сайт, на якому можна дивитися календар найпопулярніших змагань.
— Що порадили всім студентам університету?
— Найголовніша порада — це завжди отримувати задоволення від того, чим ви займаєтеся, і ніколи не боятися змінювати вид діяльності, якщо раптом щось не подобається.
Дякуємо Матвію Асландукову за змістовне інтерв'ю.
Бесіду вів Олег Топорков.