Итак, давайте поговорим о том, как следует оценивать штрафные попытки по задачам.
Толчком к подобным размышлениям служит следующая мысль. С точки зрения "качества программирования", если можно так выразиться, есть большая разница между задачей, сданной с первой же попытки и задаче, сданной после одной неверной попытки. Тогда как сдана задача с 10 или 11 попытки — существенной разницы нет. Однако же, разница в баллах сейчас одна и та же: 50 баллов (если, конечно, стоимость задачи ещё не опустилась до 30% стоимости задачи). В связи с этим, есть следующее конструктивное предложение: сделать стоимость минусов убывающей.
Например, если задача имеет стоимость 1000, это может выглядеть так:
номер попытки | штраф за минус | суммарный штраф |
1 | 100 | 100 |
2 | 79 | 179 |
3 | 62 | 241 |
4 | 50 | 291 |
5 | 39 | 330 |
7 | 25 | 386 |
10 | 12 | 432 |
15 | 3 | 461 |
20 | 1 | 469 |
> 20 | 0 | 469 |
Примерно такие значения получаются, если предположить, что стоимость минуса будет убывать в геометрической прогрессии, уменьшаясь в два раза после каждых трёх минусов.
Таким образом получается, что минусы после 20ого (часто ли вы такое видите?) даются бесплатно. Получение трёх минусов карается четвертью стоимости задачи, пяти — третью стоимости, а сделав двузначное число штрафных попыток, Вы теряете почти половину стоимости задачи.
Что-то не вижу я этой разницы. Есть разница между чистой сдачей и сдачей с ва. Просто красивей сдавать чисто :) А разница между первым ВА и пятым какая-то сомнительная. Можно потратить 5 сабмитов на исправление одного и того же бага. А можно на исправление 10 разных.
Вот разница между ВА из-за недописанного нолика в размере массива и ВА из-за неверного алгоритма есть на мой взгляд. Но она вполне себе учитывается временем, затрачиваемым на исправление бага.
Предлагаю решить проблему методом Котёнка, тоесть оставить штрафы в покое.
10 разных багов в одной задаче? Не исключено, что такого вообще никогда не было в истории спортивного программирования; в любом случае, в подавляющем большинстве случаев, много штрафных попыток по одной задаче — это безуспешные попытки исправить один и тот же баг.
А теперь представь себе ситуацию: два участника А и В сдали одни и те же пять задач примерно синхронно. Но А сдал каждую задачу с +1, а В все, кроме одной чисто, а одну — с +7. Сделал баг в одной из задач и долго пытался его найти. Причём это может быть одна малозаметная опечатка типа "=" вместо "+=" в каком-нибудь отдельно обрабатываемом случае. И он достоин быть ниже, чем А?
По-моему, да, вполне достоин. Ничем не могу аргументировать своё мнение, просто мне так говорит мой здравый смысл.
Ну а может быть так: участник А каждый раз просто забывал убрать отладочный вывод, или работал со стандартным I\O вместо файлового, или просто были глупые опечатки наподобие той, которую привел ты. Участник же В 7 раз пытался сдать неверное решение по последней задаче и только потом написал правильное. Как системе отличать причины ошибок?
Нет-нет. Когда ты делаешь одну и ту же глупую ошибку в каждой задаче, то это просто идиотизм. Или неопытность, но настолько неопытные участники обычно не сдают по 5 задач.
Разница в том, что несколько минусов по разным задачам — это точно различные ошибки (может быть, одинаковые, но каждую из них по отдельности надо было сделать). А несколько минусов по одной и той же задаче — это, скорее всего, один-два бага, которые с трудом можно найти.
Помнится, аналогичный вопрос вставал при обсуждении системы CPR.
Тогда пришли к выводу, что лёгкость "ручного" подсчёта приоритетнее небольшого улучшения объективности результатов.
Кстати, есть ещё вариант — блокировать возможность отправки(или замораживать проверку) на 1/2/5 минут после неудачного сабмита. Получится, что ошибка в простых задачах будет стоить больше, чем ошибка в сложных.
Чтобы если у тебя массив маленький, ты потратил лишние 5 минут, да. Пока кто-то другой переписывает за это время всю задачу.
Кулдаун решает проблему: если уверен, что знаешь где баг, то можешь отправить и решать дальше; не уверен — сиди и ищи.
Кулдаун зачем-то уравнивает таких двух людей.
Человек с мелким багом быстро отправит(проверяться оно начнёт не сразу) и пойдёт писать следующую, а человек с концептуальной проблемой будет тратить это время на переписывание.
В ACM у каждой неудачной посылки штраф 20 минут. И никто не жалуется.
В ACM в первую очередь учитывается кол-во решенных задач. Т.е. если один участник сдал одну задачу быстро и с первой попытки, а второй сдал две задачи, каждую с 15-20-ой попытки, то второй займет место выше первого.
На codeforces первый за задачу получил бы около 980 баллов (если начальная стоимость задачи 1000). Второй за свои 2 задачи получил бы 600 баллов. Первый займет место выше второго.
Думаю, эту разницу в стоимости задач стоит учитывать, чтоб сравнивать правила ACM и codeforces.
В ACM никто не жалуется, потому что никому не приходит в голову жаловаться. И кроме того, в ACM участникам негде это обсудить так, чтобы за этим могла понаблюдать администрация. А на TopCoder'е, например, вообще хрен угадаешь, сколько тебе будет стоить перепосылка или пятиминутное тестирование перед отправкой. И тоже никто не жалуется.
На мой взгляд, твое предложение звучит объективнее, чем то, что мы имеем сейчас. Но суть в том, что правила, к счастью, одни для всех, и заставляют всех участников выбирать стратегию, которая выгодна при этих правилах. Если текущие правила объективными назвать не каждый сможет, то справедливыми, думаю, смогут все.
Ну да, с этим сложно поспорить.
Изменение которое чтото меняет в 1% случаев. По моим ощущениям на кф почти всегда срабатывает один из следующих вариантов:
Либо ты сдаешь с первой попытки и тогда в конце у тебя либо ОК, либо fail в зависимости от силы претестов.
Либо ты пытаешься упихать какуюто полную лажу (которую тебе ломают/не проходит претесты). И в конце остаешься с -7.
Ни в одном из этих вариантов количество баллов за неудачу не играет роли.
Часто ещё бывает ситуация с +1/+2.
Сдаёшь, не замечаешь крайний случай, ломают/не проходит претесты, исправляешь.
Для +2 надо исправить что-нибудь не то под воздействием монитора :)
Да, соглашусь про +1 (ОК с +2 бывает гораааздо реже :), что и говорить про большие минуса). Но даже при условии этих вариантов предложение автора не вносит практически никаких изменений в существующие правила.
Возможно, тогда будет разумным предложить оценить масштаб этих возможных "изменений" на грядущем контесте. Если итоговая таблица заметно изменится, то почему бы и не говорить, что это хорошее предложение.
Только вот кто этим займётся? :)
Будет логично, если я.