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

Автор Gassa, история, 4 месяца назад, перевод, По-русски

Привет!

Следующий этап Universal Cup, Run Twice Contest, пройдёт 30-31 декабря 2023 года. Как следует из названия, все задачи соревнования используют формат run-twice. Я — автор соревнования.

Изначально этот контест был этапом Петрозаводских летних сборов 2022 года. Планировалось провести его как этап Opencup, чтобы познакомить с форматом более широкую аудиторию. Увы, Opencup с тех пор не проводился. К счастью, появилась новая возможность поделиться соревнованием с участниками вне сборов. Спасибо Qingyu и другим админам Universal Cup!  

Про Universal Cup

Universal Cup — серия командных соревнований по программированию. Помимо прочих достоинств, серия продолжает традиции Opencup. Этапы — контесты с разных сборов, региональные туры ICPC, локальные контесты и подобное. Участники получают свежие, разнообразные и качественные соревнования, а локальные авторы — возможность поделиться своими идеями.

Зайдите на сайт Universal Cup, чтобы поучаствовать!

Продолжительность соревнования — 5 часов. Есть семь интервалов времени для участия: первый начинается в 02:00 UTC в субботу, а последний — в 18:00 UTC в субботу. Подробности — в правилах.

Про Run-Twice

Run-twice — специальный формат задач. Классическая задача работает так; программы написаны с большой буквы, а данные с маленькой:

ввод > Решение > вывод > Чекер

  • Решение участника читает ввод и записывает вывод.
  • Чекер жюри проверяет вывод.

А задача в формате run-twice работает так:

ввод-1 > Решение > вывод-1 > Канал > ввод-2 > Решение > вывод-2 > Чекер

  • Решение участника читает ввод-1 и записывает вывод-1.
  • Канал жюри читает вывод-1 и записывает ввод-2.
  • Решение участника запускается ещё раз, читает ввод-2 и записывает вывод-2.
  • Чекер жюри проверяет вывод-2.

Важно, что во втором запуске Решение не знает ввод-1.

Известный пример такой задачи — IOI 2011 Parrots.

Естественное применение формата — задачи на кодирование и декодирование. Например, первый запуск из 123 делает one two three, а второй запуск видит one two three и восстанавливает 123. Или первый запуск получает правильную скобочную последовательность и выдаёт её лексикографический номер, а второй запуск по номеру восстанавливает последовательность. В этих примерах Канал жюри проверяет вывод-1 на корректность и, возможно, добавляет что-то во ввод-2 — например, длину строки.

Оказалось, однако, что формат run-twice позволяет делать далеко не только это. В соревновании я хочу показать примеры задач, которые я научился делать в этом формате.

  • Проголосовать: нравится
  • +107
  • Проголосовать: не нравится