Codeforces что это
Перейти к содержимому

Codeforces что это

Про сайт Codeforces

Если вы добрались до сюда, то вы уже довольно хорошо программируете, и имеет смысл не только решать задачи нашего курса, но также и дополнительно более-менее регулярно тренироваться. Рекомендую вам зарегистрироваться на сайте codeforces.com (есди он у вас вдруг открывается на английском языке, то в правом верхнем углу можно переключиться на русский), изучить его и время от времени принимать участие в его «раундах».

А именно, на этом сайте регулярно проводятся соревнования — «раунды». Они бывают в среднем раз в одну-две недели (каждый раунд писать не обязательно, но я бы вам рекомендовал хотя бы раз в месяц-полтора писать раунды). Это не какие-то призовые олимпиады и т.п., в них имеет смысл участвовать из интереса, и с целью тренировки. Раунды проводятся по разным правилам, ниже я опишу наиболее распространенный вариант.

Во-первых, у всех участников codeforces есть так называемый «рейтинг» — целое число, показывающее, насколько вы успешно выступали на раундах codeforces. Если вы хорошо выступаете, ваш рейтинг будет расти, если плохо, то падать. От рейтинга зависит цвет, которым ваш ник пишется на страничках codeforces. Кроме того, все участники codeforces делятся на два «дивизиона» по рейтингу. Вы изначально участвуете во втором дивизионе, если ваш рейтинг становится достаточно высоким (1700 и выше), то вы переходите в первый дивизион.

Раунды обычно проводятся отдельно по дивизионам. Наиболее часто проводятся два параллельных раунда — для первого и для второго дивизиона; задачи частично пересекаются, частично отличаются. Бывают объединенные раунды для двух дивизионов, бывают раунды только для второго дивизиона. Бывают раунды по совсем особым схемам и правилам. Большинство раундов являются «рейтинговыми», т.е. результаты участия в них влияют на ваш рейтинг, но бывают и «нерейтинговые» раунды. Обычно о рейтинговости раунда предупреждают заранее.

Наиболее часто раунды проводятся по следующим правилам. Для участия в раунде надо заранее зарегистрироваться на этот раунд (т.е. не просто зарегистрироваться на сайте, но еще и нажать специальную кнопку «зарегистрироваться на раунд»), обычно регистрация на раунд заканчивается минут за 5-10 до начала раунда. Раунд длится 2-2.5 часа. Вам предлагается 5 задач, упорядоченных по сложности (по крайней мере как думают авторы задач). У каждой задачи есть своя стоимость, определяющая количество баллов, которые вы получите при успешном решении этой задачи. У простых задач стоимость невысокая (обычно от 500), у сложных — высокая (обычно 2500). (Эти баллы не имеют прямого отношения к баллам рейтинга.)

Вы можете решать задачи в произвольном порядке (хотя обычно все решают от простых к сложным), на любых допустимых языках программирования. Когда вы считаете, что вы написали решение, вы можете его отправить на проверку (аналогично тому, как вы делаете на нашем сайте). Ваша задача будет проверена на так называемых «претестах» — некотором наборе тестов, который не обязательно является полным (т.е. вы можете пройти все претесты, даже если ваше решение не совсем правильное). Если ваше решение не прошло хотя бы один претест, оно не принимается, и вам об этом сообщают. Если оно прошло все претесты, то оно «принимается на окончательную проверку», которая будет проходить в конце раунда.

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

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

Вдобавок ко всему этому, существует система «взломов». А именно, если ваше решение по некоторой задаче прошло претесты, вы можете его «заблокировать» (нажав на соответствующую кнопку в интерфейсе). После этого вы уже не можете перепосылать эту задачу, но зато вы получаете возможность смотреть исходные коды других участников по этой задаче (только те, что прошли претесты). Чтобы вам не возиться в огромной таблице результатов, все участники перед раундом псевдослучайным образом делятся по «комнатам», и вы можете просматривать решения только участников из своей комнаты. Чтобы просмотреть уод участника, надо сделать двойной щелчок по соответствующей ячейке в таблице результатов комнаты.

Цель просмотра решения — попробовать найти в нем ошибки. Если вы думаете, что вы нашли ошибку в решении, вы можете придумать тест, на котором, как вы думаете, это решение будет работать неправильно, и отправить этот тест в систему — попробовать «взломать» это решение. Система тут же проверит это решение на вашем тесте и, если оно действительно не работает, то вы получите плюс 100 баллов, если вы ошиблись, то вы получаете минус 50 баллов. В случае успешного взлома участник, которого взломали, это увидит, и (если он еще не заблокировал задачу) сможет перепослать свое решение. Если он уже заблокировал задачу, то ему не повезло. Соответственно, аналогично другие участники могут взламывать ваши решения; при этом, конечно, вы не видите тест, которым вас взломали.

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

После окончания времени раунда все решения перетестируются на полноценном наборе тестов. Теперь если у вас все-таки было неверное решение, то оно почти наверняка не пройдет какой-нибудь из полноценных тестов. После этого вычисляются окончательные результаты. А именно, по каждой задаче, которую вы сдали, вам начисляются баллы, соответствующие стоимости задачи в тот момент, когда вы послали по ней последнее решение, минус 50 баллов за каждую предыдущую посылку по этой задаче. По тем задачам, которые вы так и не сдали, штрафные баллы не начисляются. Добавляются результаты взломов (100 баллов за успешный взлом, 50 баллов за неуспешный), и получается ваш итоговый балл, определяющий место, которое вы в итоге занимаете. От этого места зависит прирост вашего рейтинга.

После каждого раунда публикуются краткие разборы задач (в тот же день или через день-два). Рекомендую вам их читать. Кроме того, после окончания раунда вы все еще можете «дорешивать» — отправлять задачи на проверку просто чтобы дописать или исправить ошибки, которые у вас были. На результаты раунда это, конечно, не влияет, но все-таки разобраться в своих ошибках нужно.

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

«Сейчас это самый популярный проект в мире, который образует сообщество»: в Университете ИТМО отметили десятилетие Codeforces

Одна из самых известных мировых площадок по спортивному программированиюCodeforces — отметила десятилетие своей работы. В конце 2000-х годов она была создана преподавателем Саратовского государственного университета Михаилом Мирзаяновым как виртуальное сообщество для тех, кому интересно решать программистские задачи. Сегодня Михаил работает в Университете ИТМО, который стал новым домом для Codeforces. Корреспондент ITMO.NEWS побывал на праздничном вечере, пообщался с гостями и узнал от них, какое влияние Codeforces оказал на их жизнь и на все сообщество.

Праздник «10 лет Codeforces». Фото: ITMO.NEWS

Праздник «10 лет Codeforces». Фото: ITMO.NEWS

На один субботний вечер мансарда Технопарка Университета ИТМО на Биржевой линии превратилась в самую важную точку на мировой карте спортивного программирования. Здесь принимал поздравления основатель крупнейшего сообщества спортивного программирования Codeforces Михаил Мирзаянов. В 2009 году он задумал создать площадку, где любители соревнований по программированию могли бы не только состязаться друг с другом, но и общаться, обмениваться опытом и тренироваться. Сегодня на Codeforces зарегистрировано более 600 000 активных пользователей, проводятся турниры, хакатоны, даже соревнования по квантовому программированию. На праздник в Петербург приехали партнеры, тренеры, чемпионы мира по спортивному программированию, бывшие волонтеры и сотрудники Codeforces, работающие теперь в крупнейших высокотехнологичных компаниях, ведущих университетах и институтах.

«Здесь собралась аудитория разных поколений — те, с кем меня и Codeforces столкнула жизнь, начиная от тех, кто заметно старше меня, кого я считаю своими учителями, и заканчивая совсем юными ребятами, школьниками, для кого мы сейчас и прикладываем эти усилия, — комментирует Михаил Мирзаянов. — Сначала, когда я только обдумывал юбилей, думал, что, может быть, и не надо устраивать никакого празднования, что это не так и важно. А потом, когда те, кто в разное время соприкасался с Codeforces, начали говорить: «Да, я приеду из Швейцарии», «Да, я приеду из Ирландии», «Да, я приеду из Москвы», я понял, что это правда значимо. Мне кажется, это даст мне дополнительную мотивацию и силы, чтобы двигаться вперед»

Михаил Мирзаянов. Фото: ITMO.NEWS

То, что было нужно сообществу На празднике люди, известные всему программистскому сообществу России, вспомнили о том, как создавался Codeforces, разговаривали о будущих проектах и соревнованиях. Среди тех, кто может рассказать о том, как все начиналось, — тренер по спортивному программированию Андрей Лопатин. Он знает Михаила с 2002 года, именно Лопатин познакомил создателя Codeforces, тогда еще малоизвестной площадки, с основателем «ВКонтакте» Павлом Дуровым. С тех пор создатель крупнейшей российской соцсети вот уже много лет поддерживает проект. Как считает Лопатин, Codeforces «выстрелил» потому, что оказался именно тем, что было так нужно сообществу.

«Раньше был американский проект Topcoder, но уже в 2008 году он стал постепенно загибаться, — рассказывает он. — К тому же, там были только форумы и контесты. Все время по сообществу ходили мысли, что нужно нечто большее. Миша умело смог собрать все в одном месте. Появился полноценный портал, на котором есть все, что нужно — и задачи, и блоги, и комментарии к ним».

Праздник «10 лет Codeforces». Фото: ITMO.NEWS

Сложно представить, что было бы без Codeforces Первые шаги Codeforces помнит и Эдвард Давтян, который сейчас работает software-инженером в швейцарском подразделении Google. Когда Мирзаянов создавал свою платформу, Эдвард учился в Саратовском государственном университете и увлекался программированием. Постепенно он влился в команду новой площадки, участвовал в соревнованиях.

«Я помню самый первый контест Codeforces, который проходил в 2011 году, — вспоминает Давтян. — Я его писал как участник. Рассылка тогда была совсем небольшая, участников было человек 200. Мы написали задания, потом съели тортик — именно так было положено начало. Мне было сложно представить [как все изменится] за 10 лет. Сейчас Codeforce стал более разносторонним, здесь проходят разные типы соревнований, разные компании, устраивают турниры, проводятся различные школы».

Эдвард Давтян. Фото: ITMO.NEWS

Одним из тех, кто пришел на Codeforces, когда площадка только набирала популярность, был будущий чемпион мира по спортивному программированию Геннадий Короткевич. Он также посетил праздник, одетый в свою фирменную футболку с ником «tourist», под которым он приобрел мировую известность.

«Я уже не помню, где я впервые увидел ссылку на Codeforces, — вспоминает он. — Он тогда только создавался, и это была платформа, которая выполняла социальную функцию. Там появлялось много блогов, как раз в этот момент начинался чемпионат мира [по программированию], многие участники, кто ездил на него, публиковали на новой платформе фотографии, блоги, это было интересно читать. Начали проводиться турниры, где были все сильнейшие, это очень интриговало. Сейчас это самый популярный проект в мире, который образует сообщество».

Праздник «10 лет Codeforces». Фото: ITMO.NEWS

На пороге будущего Сodeforces – это не только платформа для соревнований и общения, но и важный образовательный ресурс, где можно найти огромное количество полезных материалов. Сегодня многие тренеры и преподаватели используют этот контент для своей работы.

«Для меня — это очень удобная площадка, — рассказывает Андрей Станкевич, тренер, подготовивший не одно поколение чемпионов ICPC. — Мы часто с командой выбираем какое-то из недавних соревнований и решаем задания. Поскольку площадка глобальная, то люди из любых концов земли заливают туда задачи, а ты можешь потренироваться и сравнить свои результаты с успехами команд из разных стран. Я использую его в том числе для тренировок со школьниками — там очень удобный интерфейс создания тренировочных соревнований плюс есть теги, по которым можно искать задания на конкретные темы».

Андрей Станкевич. Фото: ITMO.NEWS

На празднике оказалось много школьников — тех, кто прямо сейчас осваивает навыки программирования с помощью Codeforces. Один из них — ученик 366-го физико-математического лицея шестнадцатилетний Иван Климов. Он занимается программированием уже три года, и все это время его занятия неразрывно связаны с платформой Михаила Мирзаянова.

«Когда я впервые зашел на платформу, мне было еще 13 лет, — рассказывает он. — Я еще не понимал всю глобальную идею, но это было очень интересно и захватывающе. Существование такого огромного сообщества людей, которым интересно просто решать задачи, что достаточно неординарная вещь — восхищает. Сегодня я захожу на Codeforces каждый день для развития своих навыков, там я могу просто провести время, решать задачи, это в какой-то мере отдых от повседневной рутины, также я могу найти там единомышленников».

Как объявил в ходе праздника Михаил Мирзаянов, скоро образовательной составляющей на Codeforces станет еще больше. Уже сейчас проходит бета-тестирование новый учебный подраздел, который создается при поддержке Университета ИТМО.

«Буквально чуть более недели назад, 19 февраля, мы открыли для бета-тестирования образовательный раздел Codeforces, созданный по инициативе и при поддержке ИТМО, — рассказал он. — Запущена первая лекция пилотного курса, которая уже собрала позитивный фидбек от сообщества. Это приятно и говорит о том, что мы на правильном пути. Приятно прикладывать усилия там, где они нужны. Мне кажется, что мы делаем хорошее дело».

Codeforces что это

MKasirloo → Do not use TSA anymore!

Некропост

P_Nyagolov → Dynamic Segment Trees

samudra_mitra → CSES Graph Algorithms solution

awoo → Educational Codeforces Round 158 [рейтинговый для Div. 2]

NemanjaSo2005 → Codeforces Round 911 (Div. 2) Editorial

Theo830 → Codeforces Round #912 (Div. 2)

mondayguy → Задачка из онлайн контеста Яндекса

xX_I_Have_Esbat_Xx → Becoming CM!

_MUSAFIR_ → CP Books Collection( U Can Ignore it )

Halym2007 → how to find shortest cycle in weighted undirected graph?

n0sk1ll → Editorial for Codeforces Round #910 (Div. 2)

molney → Разбор Codeforces Round 909 (Div. 3)

lucyanna2018 → Where can I find the problems of NEERC Western/Moscow Subregional contest for the last two years?

18o3 → Indian ICPC 2023-24 Regionals — Qualifier Rounds

Datapas → I’m blue.

KAZINAK_1488 → centroid decomposition is kinda divide and conquer but for trees

zwezdinv → Codeforces Round #909 (Div. 3)

intrusiv → Problem of the Year 2023

Careless_man → Hi,Can you help to find book that teaches how use c++ in CP.

Некропост

asrinivasan007 → The relationship between IQ and CF Rating

nor → [C++] Avoiding temporaries — generalizing i++ using std::exchange

R adewoosh → I’ve completed Project Euler

stdfloat → Unexpected Full Score on oj.uz

xX_I_Have_Esbat_Xx → Reaching my birthyear!

lanhf → CodeTON Round 7 (Div. 1 + Div. 2, Rated, Prizes!) Editorial

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

Как работает система рейтинга?

Автор del1ke, история, 3 года назад ,

Доброго времени суток! 🙂

Я ещё относительно недавно начал сидеть на этой замечательной платформе по решению олимпиадных задач. Но почти сразу же заметил, что система рейтинга работает довольно странно.

Например, с самого начала у всех разный начальный рейтинг. У меня лично был около 1400, у моих знакомых были и 1200, и 1300 и т.п. Но это пустяки. Главное вот что: (восстанавливаем события) Делаю 2 задачи на 3 дивизионе. Первая задача примерно за 7 минут, вторая примерно за 20. Остальные не пробовал. Мой знакомый делает только первую задачу за примерно 10 минут и на этом всё. Итог: мне дало примерно -20 в рейтинге, ему дало примерно +20 в рейтинге, причём до этого у нас рейтинг был примерно одинаковый.

Я понимаю, что с моей стороны это может выглядеть глупо, типа я ною и т.д., но всё же я люблю справедливость. Товарищи, объясните, пожалуйста, как же все-таки работает система рейтинга? И как поднимать свой рейтинг? (кроме банальных ответов по типу «делай больше задач и чаще») Буду благодарен, если кто-то объяснит.

Теги

#рейтинг

Codeforces что это

MKasirloo → Do not use TSA anymore!

Некропост

P_Nyagolov → Dynamic Segment Trees

samudra_mitra → CSES Graph Algorithms solution

awoo → Educational Codeforces Round 158 [рейтинговый для Div. 2]

NemanjaSo2005 → Codeforces Round 911 (Div. 2) Editorial

Theo830 → Codeforces Round #912 (Div. 2)

mondayguy → Задачка из онлайн контеста Яндекса

xX_I_Have_Esbat_Xx → Becoming CM!

_MUSAFIR_ → CP Books Collection( U Can Ignore it )

Halym2007 → how to find shortest cycle in weighted undirected graph?

n0sk1ll → Editorial for Codeforces Round #910 (Div. 2)

molney → Разбор Codeforces Round 909 (Div. 3)

lucyanna2018 → Where can I find the problems of NEERC Western/Moscow Subregional contest for the last two years?

18o3 → Indian ICPC 2023-24 Regionals — Qualifier Rounds

Datapas → I’m blue.

KAZINAK_1488 → centroid decomposition is kinda divide and conquer but for trees

zwezdinv → Codeforces Round #909 (Div. 3)

intrusiv → Problem of the Year 2023

Careless_man → Hi,Can you help to find book that teaches how use c++ in CP.

Некропост

asrinivasan007 → The relationship between IQ and CF Rating

nor → [C++] Avoiding temporaries — generalizing i++ using std::exchange

R adewoosh → I’ve completed Project Euler

stdfloat → Unexpected Full Score on oj.uz

xX_I_Have_Esbat_Xx → Reaching my birthyear!

lanhf → CodeTON Round 7 (Div. 1 + Div. 2, Rated, Prizes!) Editorial

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

Автор Ixanezis, 12 лет назад ,

Безуспешно пытался похакать товарища во время контеста #100:

Позже, как оказалось, в претестах есть «аналогичный» тест 6 9 3.

Как признался в личке, сам господин dip2283, у него локально эти тесты выдают NO вместо YES.

Между тем я попытался скомпилировать его решение с помощью

g++ 4.4.0 (Win XP) со всеми опциями, указанными в http://codeforces.com/blog/entry/79

g++ 4.6.1 (Ubuntu 11.10) со всеми опциями, указанными по той же ссылке.

Везде всегда на эти оба теста это решение выдаёт NO. Но, как видим, претест 6 успешно выдал YES собственно в системе тестирования.

Если производить «Запуск» на codeforces-сервере, то рассматриваемое решение выдаёт YES (почему. чем и как там собирали программу?) на тест 6 9 3 (GNU C++ 4.6), однако NO на 6 3 1 (GNU C++ 4.6, VS 2005).

Может кто подскажет, где я что упустил?

P.S. А на мою просьбу показать авторское решение по первой задаче (из-за этого теста 6 3 1), Наталья лишь заметила, что в претестах содержится «аналогичный» (!) тест 6 9 3.

Теги

double, c++, codeforces #100

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *