Очень давно задаюсь этим вопросом и ни разу не получал ни от кого вразумительного ответа. При этом очевидно, что у этого решения, которое скорее всего является примером принципа "это плохо, но исторически сложилось, давайте не будем ничего менять", много минусов:
1) На финал могут не отобраться команды, которые выступили бы там лучше.
2) Для команд, которые имеют шансы пройти на финал, сильно усложняется подготовка к нему, потому что им нужно писать тренировки до декабря в режиме без Team Notebook. По сути эти команды существенно ухудшают свое качество подготовки к финалу в течение этих четырех месяцев. Особенно болезненны такие переключения для команд, которые ездили на финал в прошлом году, для меня в свое время это было довольно некомфортно.
3) Это приводит к тому, что некоторые сильные команды готовят свой Team Notebook некачественно или вообще его не готовят. Понятно, что это может сильно ухудшить их результаты на финале.
4) Чем дольше развивается acm icpc, тем больше разных тем будет встречаться на контестах. Держать реализацию всех базовых алгоритмов в голове становится все сложнее и сложнее. Не хочется превращать добавлять в neerc соревнование по трерировки памяти, кажется, что это не самое интересное в acm.
5) Запрет на использование уже реализованных базовых алгоритмов делает acm еще менее похожим на промышленное программирование, имхо это выглядит слегка по-детски. В идеале бы конечно разрешить приносить на контест либу ограниченного размера прямо в электронном виде, не знаю точно почему на финале до сих пор не так, но слышал, что они обдумывают изменение этого правила.
Из плюсов я слышал только то, что это стимулирует начинающие команды учить алгоритмы, но я если честно этот аргумент не понимаю, о каких начинающих командах можно говорить на полуфинале?
Отдельно хотелось бы отметить неординарную любовь жюри к задачам про кактусы (которые кроме NEERC не встречаются более или менее нигде), которая в совокупности с невозможностью использовать заготовку создает необходимость тратить кучу времени на умение быстро писать не особо интересный код.
P.S. Очень хотелось бы услышать комментарии от жюри NEERC.
P.P.S. Личные мнения членов жюри также приветствуются.
Да! Давать задачи на них каждый год — сомнительная практика. Не буду указывать пальцем, но некоторые люди на некоторых отборах на межнар из года в год давали одну и ту же задачу, которая заключалась в том, что надо решить задачу о назначениях (буквально). Данный случай не намного лучше.
А есть хоть один живой пример полезного использования Team reference на финале? Нам за два года пригодилось только страница со списком галочек, которые надо проставить у gedit.
Т.е. что потенциально экономит код в электронном виде, я ещё пониманию. Бумажный вариант, кажется превращается либо в сборник алгоритмов которые ты и так пишешь быстро, либо в случайную маленькую выборку жести, которую ты не угадал, с вероятностью близкой к 1.
Ну и во втором случае угадал это какой-то достаточно сомнительный повод получать приемущество, если честно, на мой вкус.
PS. Это все следует считать только моей личной позицией.
Постараюсь ответить с позиции студента, который пишет официальное соревнование, хотя я сам уже давно этого не делал. Из того, что используется на любом официальном контесте — это шаблон и настройки вима. Шаблон многие автоматом помнят наизусть, но помнить настройки вима — это так себе. Про сборник алгоритмов, которые ты и так знаешь, я с тобой не согласен, потому что даже если я знаю алгоритм, я не смогу его написать так же быстро, как перебить с бумажки. Если же это алгоритм, который я знаю, но писал совсем редко (я-ля суффдерево, кактус, линк кат), то разница становится еще больше.
Про случайную маленькую выборку жести я скорее с тобой согласен, но не считаю это большой проблемой. В любом случае на финале правила такие, что этот эффект есть, странно делать правила не как на финале.
На NEERC нет ни вима, ни его настроек.
Про это тоже планировалось пост написать. Понятно, что невозможность использовать ту же ОС, что и на финале — это тоже очень плохо. Но здесь я уже вполне понимаю, почему это сложно сделать, на площадке в ИТМО наверно справятся залить ubuntu на компы, а вот на остальных площадках могут возникнуть технические сложности. Другое дело, что сейчас, судя по всему, в любом случае не соблюдается равенство возможностей на всех площадках, потому что компы, предоставленные участникам, могут быть очень разными по производительности.
Ненене, про ось не надо. Сейчас можно на вижаке выйти в финал, и это здорово.
Я не говорю, что надо убирать винду, но то что нету линкуса — это плохо. Много кому писать под виндой не удобно.
В 2015 мы перебивали из ноутбука, как минимум: FFT, минкост, формулы объема в геоме. Может что-то еще, не помню.
В 2017 мы, в частности, перебивали задачу с Тимуса — и это сыграло с нами злую шутку :)
Вообще это сложный вопрос — стоит ли такое разрешать, тут с каждой стороны будет 100500 аргументов вида "АСМ != промышленное программирование" против "АСМ != соревнование по запоминанию кода", все вот эти "если не тупой — выучишь код и напишешь без бумажки" или "толку с твоих алгоритмов, если ты их закодить не можешь" и так далее. Но вполне валидный пойнт, что если такое разрешено на финале (не важно — плохо это или хорошо), и подготовка команды базируется на этом факте (в стиле "вот это не надо помнить, оно просто перебивается с бумажки" или "я набью по памяти, если не заработает — сравним побайтово с ноутбуком"), то странно давать на отборе правила, отличные от правил на финале.
P.S. А практический подход к вопросу о том, разрешать это или нет — сейчас осталось очень мало контестов, где никакой референс не разрешен (а в онлайне у участников вообще гугл под рукой), так что выделяться на этом фоне — спорная затея. Разве что в этом вся фишка соревнований.
1). Весьма и весьма сомнительно. В отличие от финалов (где встречаются задачи на симплекс-метод, например), на полуфиналах не попадается редко встречающихся алгоритмов. Имхо, те алгоритмы, которые вообще попадаются на полуфиналах, хотя бы один член команды, претендующей на финал, должен уметь писать хорошо и быстро. В таком случае, скорость набора кода из головы не отличается от перебивки с бумажки. Исключение — кактусы, это действительно valid point.
2). Следует из первого, тот же самый поинт. Разница между перебивкой суфавтомата и написанием по памяти не отличается. Крайне сомнительно, что люди что-то потеряют от того, что еще раз по памяти напишут какой-то алгоритм.
3). Это очень странный поинт. Если команда за полгода не может подготовить нормальный Team Notebook (при том, что очевидно, что его надо готовить из-за странных задач на симплекс метод), то почему ты думаешь, что они смогут это сделать за 9 месяцев?
4). ACM пока не дорос до того уровня, чтобы держать идеи базовых алгоритмов было сложно. Это тупо вопрос тренировок.
5). Промышленное программирование != спортивное программирование, это две разные вещи, и непонятно зачем их смешивать.
Короче, кроме того, что внутри одного соревнования действуют разные правила на разных этапах, ничего плохого я не вижу в запрете на Team Notebook на полуфинале.
1) "Имхо, те алгоритмы, которые вообще попадаются на полуфиналах, хотя бы один член команды, претендующей на финал, должен уметь писать хорошо и быстро." Имхо нет, потому что я не хочу на тренировках тренировать память, мне это не интересно. Лично для меня скорость набора кода из головы всегда была раза в 2-3 ниже, чем с бумажки. И я видел в своей жизни много людей, которые думали, что они всегда всё вбивают из головы быстро, но на практике сливали важный тур потому что сажали баги в известных алгоритмах.
2) Суфавтомат — это плохой пример, потому что он как раз встречается часто. Я приводил в посте примеры алгоритмов, которые многие профессиональные участники быстро не вобьют, хотя эти алгоритмы в базовый набор точно входят.
3) Я считаю, что если всем командам с самого начала внушать, что воркфлоу включает бумажку с алгоритмом, то таких случаев совсем не станет. Иначе команда может валидно утверждать, что она сейчас выступает успешно и за 5 месяцев до финала воркфлоу менять не хочет. Утверждение, что Team Notebook нужен только для экзотики неверное, он помогает увеличить надежность и скорость написания и не экзотических алгоритмов.
4) Смотря, что считать базовыми алгоритмами. Я сомневаюсь, что ты сможешь сейчас за минут 5-10 вбить Мо на дереве, а задача на эту тему на полуфинале или финале вполне вероятна.
5) Это не одно и то же, но если есть возможность приучать к хорошим практикам, то почему этого не делать?
Может у организаторов neerc просто нет средств бороться со всеми возможностями читерства, которые появляются, если разрешить team reference(особенно на удаленных площадках)?
Если говорить о напечатанной бумажной версии team reference, как на финале, то не очень понятно о какой именно возможности читерства идет речь?
Очень вряд ли.
По сабжу: уже говорили, но негативные комменты так минусуют, что может сложиться мнение, что только единицы так думают. Если ты очень хорошо знаешь алгоритм, то и написание по памяти, и перебивание с бумажки — это чисто механический процесс, в котором баги возникают не от того, что что-то неправильное написал, а от опечаток. И я не уверен, что количество опечаток при перебивании с бумажки меньше. Обычно баги как раз случаются в момент использования стандартного алгоритма в конкретной задаче, а это уже с бумажки перебить нельзя.
Но на самом деле сабж не о полезности team reference, и я бы убрал эти аргументы, потому что они очень субъективны и затеняют основную мысль (и дают возможность отвечать на них, а не на основную мысль поста).
Разрешать team reference на финале и запрещать на полуфинале — это очень странная практика, действительно.