Недавно я создал скрипт для очистки последних n соревнований пользователя, где n задается как вводимые пользователем данные. Затем я столкнулся с этим вопросом и подумал, что мне следует написать лучший сценарий, который может использоваться всеми пользователями Codeforces во всем мире.

Здесь я представляю вам VirtualCF - парсер Codeforces для конкретного конкурса, идентифицированного Id. Его можно использовать для непрерывного и беспрепятственного участия в виртуальном конкурсе, улучшении тренировочного или даже живого конкурса.

Вы когда-нибудь думали о том, чтобы попрактиковаться в конкретном раунде - скажем, Div3 и чувствовали себя ленивыми по поводу создания надлежащей структуры каталогов для конкурса, имея надлежащие файлы с названиями задач?

Вы когда-нибудь задумывались о том, чтобы получить визуальное представление принятого соотношения задач в соревновании CF, прежде чем фактически участвовать в нем или даже обычно практиковать его?

Если да, то мой скрипт Python в вашем распоряжении. В конце я предоставил ссылку на видео Youtube для того же.

Позвольте мне рассказать вам о запуске моего сценария на Codeforces Round # 588 (Div. 2), недавнем конкурсе Радевуша, который проводился 23 сентября 2019 года.

При запуске скрипта vir. py, который я сделал доступным ниже через свой github, он предложит две вещи:

  1. ID конкурса CF, который нужно проанализировать
  2. Какой предпочтительный язык программирования вы хотите

Но перед этим позвольте мне показать вам файлы, содержащиеся в моем репозитории Github.

После того как вы пометите мое репо и клонируете его, у вас будут 3 файла.

В файл template.txt необходимо вставить свой начальный код или, как они говорят, файл шаблона. Я показываю вам общий шаблон, который вы можете использовать на Codeforces.

#include <iostream> using namespace std; int main() { // your code goes here freopen("input.txt", "r" , stdin); return 0; }

Вставьте приведенный выше код в файл template.txt, и все готово.

Теперь просто запустите vir. py с вашего терминала.

В первом запросе скопируйте идентификатор конкурса из строки заголовка конкурса CF.

Выделенная часть - это ID. Затем выберите желаемый язык.

Я использую C ++, поэтому выбираю вариант 1.

Как только вы введете 1, начнется анализ и будет создана соответствующая папка с названием конкурса.

Внутри этой папки каждая проблема (A - E) будет иметь отдельные папки. Позвольте мне показать вам работающий терминал.

Родительская папка создана. Пойдем внутрь.

Папка проблемы A создана. Пойдем дальше.

B был создан. Давайте перейдем непосредственно к F, чтобы сэкономить место.

Все проблемы разобраны.

Теперь создаются два дополнительных файла - stats.png и stats.txt.

Он содержит информацию об уровне сложности и степени принятия каждой задачи.

На этом мы подошли к концу разбора.

Позвольте мне показать вам stats.png.

stats.txt - это, по сути, письменный формат графика, который вы можете увидеть сами. Он помогает пользователю оценить сложность каждой задачи и конкурса в целом.

Позвольте мне показать вам структуру каталогов, которая поможет вам понять полезность этого синтаксического анализатора.

Слева вы можете увидеть, что для каждой проблемы есть отдельная папка.

В каждой такой папке есть

  • файл кода A.cpp, который необходимо отправить
  • файл .txt, содержащий все примеры ввода и вывода, представленные на странице проблемы CF. Ниже вы можете увидеть файл A.tx t, в котором есть ввод-вывод для проблемы A.
  • файл input.txt, который я буду использовать лично для связи с моим файлом кода A.cpp. Это из-за оператора freopen в моем начальном коде.

Вот файл A.cpp с желаемым шаблоном.

Это все! Теперь вы можете беспрепятственно тренироваться при CF!

Вот как это можно использовать:

  • Разберите конкурс, в котором вы хотите участвовать виртуально.
  • Разберите конкурс, который вы просто хотите разрешить.
  • Анализируйте текущий конкурс, получая идентификатор конкурса сразу после его начала. В таком сценарии будут недоступны только файлы stats.png и stats.txt.

Вот моя ссылка на репо на Github: VirtualCF

Вот демо Youtube Video:

Https://youtu.be/9UNwuovxQm4

Первоначально опубликовано на http://quora.com.