Подумаем, какую статистику о задаче можно использовать при подсчёте стоимости задачи.
Количество сдавших задачу? Безусловно, количество сдач отражает интеллектуальную и техническую сложность задачи.
Статистика времени сдачи? Пожалуй, нет. Если есть какой-то заранее заявленный порядок задач по сложности, то, как показывает опыт, большинство участников начнут решать с самой простой задачи, и тогда использование статистики времени сдачи опирается на мнение авторов контеста о сложности задач. Если нет, то очень часто бывает, что вначале контеста много участников сдаёт задачу, которая первой была сдана кем-то. Тогда как для очень сильных участников бывает несколько одинаково простых для них задач, которые весьма разные по сложности для большинства других участников. И получится, что быстрее всего будут сдавать не самую простую задачу, а ту, которая первой будет кем-то сдана.
Количество попыток? Пожалуй, да. Статистика количества попыток говорит о том, насколько сложно написать задачу без ошибок. Конечно, важна при этом полнота набора тестов, на котором задача тестируется сразу.
Теперь подумаем, как должна зависеть стоимость задачи от того, сколько человек её сдали. Очевидно, что задача, сданная одним человеком, гораздо сложнее задачи, которую сдали десять человек. Разность в сложности между такими задачами далеко не такая, как между задачами, сданными десятью и двадцатью людьми. Скорее она примерно такая же, как между задачами, сданными десятью людьми и ста. Соответственно, кажется естественным функция вида 1/k, где k – количество сдач.
При этом есть две проблемы, связанные с такой формулой. Во-первых, если одну из задач на контесте решит только один человек, а все остальные – хотя бы 10, то человек, решивший уникальную задачу, скорее всего выиграет: 0.1 – очень мало по сравнению с 1. Нормально ли это? Наверное. Ведь единственного человека, решившего самую сложную задачу, пожалуй, можно назвать сильнейшим.
Правда, есть один нюанс. Дело в том, что такая функция стоимости задачи может побудить некоторых из сильнейших участников упорно решать сложную задачу, рассчитывая быть единственным, кто её решит и выиграть. И он может её решить и выиграть, а может потратить на неё весь контест, и не решить, показав очень плохой для себя результат. Так как целью контеста является определение сильнейших, такой исход был бы нежелательным.
Кроме того, возможна следующая ситуация. В конце контеста две примерно одинаково сложные задачи никто не решил, и несколько сильных участников пытаются решить кто-то одну из этих задач, а кто-то другую. И в результате одну задачу решит один человек, а другую – три или четыре. И получится, что человек, решивший уникальную задачу, выиграет с большим отрывом, несмотря на то, что несколько других участников решили примерно такую по сложности задачу.
Таким образом, фактор случайности намекает на то, что не должен быть такой разрыв по стоимости между задачами, решёнными одним человеком и решёнными 2-5 людьми.
С другой стороны, задача, которую решили 100 человек, действительно вдвое сложнее, чем задача, которую решили 200. На таких задачах фактор случайности нивелируется за счёт большого количества испытаний.
Есть несколько способов борьбы с этой проблемой. Например, можно поделить 1 не на k, а на медленно растущую функцию от k, например, корень (четвёртой степени) от k, или даже ln k. Или можно взять функцию 1/(k+10). Более того, можно даже сделать задачи популярности от 1 до 5 одинаковой стоимости. Например, стоимость задачи может быть определена, как min(1/ln(5), 1/ln(k)), или 10-(2, log_2(k)).
Теперь подумаем, как должна стоимость задачи зависеть от числа попыток, которые понадобились участнику для того, чтобы сдать задачу. Очевидно, стоимость задачи не должна бесконечно падать с увеличением количества попыток, потому что решённая задача – это всё же решённая задача, сколько бы попыток не было на неё потрачено. Иначе может получиться, что через некоторое количество попыток пропадёт смысл сдавать задачу – это неправильно со всех точек зрения. Какая часть задачи не может быть съедена штрафными попытками – подлежит обсуждению. Мне лично нравится коэффициент 2/3.
Надо заметить, что между + и +1 есть существенная разница, а вот +7 и +8 – это почти одно и тоже. Поэтому чем дальше, тем меньше баллов надо отнимать за штрафную попытку. В связи с этим, можно, например, вычитать за первую штрафную попытку 1/6 стоимости задачи, а за каждую следующую – вдвое меньше, чем за предыдущую.
Таким образом, как пример вышенаписаного, можно предложить следующую формулу стоимости задачи. За сданную задачу даётся, во-первых, неотъемлимая стоимость задачи в размере х = min(1/ln(5), 1/ln(k)), где k – количество сдавших эту задачу участников. Кроме того, даётся бонус за чистоту в размере x/2^t – где t – количество попыток, с которых была сдана задача.
1) Можно провести нерейтинговый контест по схеме, которую выберите, может два, и тогда жури и сами участники смогут сделать вывод относительно пригодности такой системы.
2) Замечание правильное, поэтому нужно функцию, которая не будет стремительно расти если количество решивших будет уменьшаться до 1.
1. Это уже вопрос оформления.
2. Возможно, это имеет смысл учитывать, но не совсем понятно, как.
Есть одна идея: можно считать количество сдач и статистику штрафных попыток не для всех участников а, скажем, для первых 20/50/100 по какому-нибудь тупому параметру, например, по числу решённых задач, а потом по алфавиту. Тогда слабые участники, творящие какой угодно треш, никак не повлияют на адекватность результатов.
3. Да, ты прав, время сдачи всё же надо учитывать наравне со временем. Например, можно за первую штрафную попытку прибавлять к штрафному времени 40 минут, за вторую - 20, за третью - 10, и так далее. Прибавлять время сдачи каждой задачи к штрафному времени мне не нравится так же сильно, как и идея равномерно в течение контеста уменьшать стоимость задач - почему лёгкий тупняк в начале контеста должен вредить гораздо больше, чем лёгкий тупняк в конце? Лучше уж как на GCJ, время последней сдачи.
Я был на сборах и общаться со снарком я не хочу, ну разве что письменно) Кроме того, его идеи мне не нравятся.
2. Почему же каша? Всё же ясно. Просто надо учитывать топ-100 адекватных участников. Чтоб уж совсем просто, можно учитывать топ-100 по рейтингу.
3. Конечно сырые, только что же придумал. А если спорные - спорь, обсудим, может, что-то хорошее родим. Ты согласен с моим мнением или ты считаешь логичным, что лёгкий тупняк в начале контеста приводит к существенно большим проблемам, чем в конце?
Ты не понял. Всем, кто знает матан хотя бы на 3, совершенно необязательно вычислять логарифм, чтобы оценить убывание количества баллов.
Конечно я сам их не знаю. Это ведь только идеи.
В одиночку составить грамотную модель - это слишком сложно для неоплачиваемого труда в день перед защитой диплома =)
Я хочу серьёзного ОБСУЖДЕНИЯ этого вопроса. И ещё отчасти я хочу заронить в народные массы мысль о возможности такого способа оценки - ведь о таком почти никто никогда не слышал.
Какого вы низкого мнения о математиках... По идее это должен уметь любой выпускник средней школы ;)
Правда, от этого будет мало толку, если учистники во время турнира (до блокировки задачи) будут видеть количество человек решивших конкретную задачу, ибо, как заметил Sammarize, очень многие будут вслед решать задачу, которую уже многие решили. Мне кажется, вполне достаточно было бы видеть своё положение и общее количество решенных задач каждым из других участников, без указания конкретных решенных ими задач.
Если применить всё это, то можно спокойно использовать статистику времени сдачи для оценки сложности задач; и мне кажется, что время сдачи здесь было бы самым адекватным показателем, делающий в том числе ненужным показатель количества попыток сдачи.
p.s. лучше бы сдали че нить в дорешивание, немного успокаивает)
У меня немного параллельное отношение к этому) Каждый прав в чем то, но это затерялось в бурных эмоциях, а по поводу прямоты - это круто, но зачастую это личшее..
срачадискуссии?:) Да она всем кто читает дает моментально +5 к удаче и боевому духу, а тем, кто задумается, что стоит проводить время с большей пользой - еще и +50 к программированию:)Сволочи!(Хотя нет, это я зря, контест превыше всего. Но вот после него-то уже можно было...) А я правильно понимаю, что, если американским девчонкам сказать: "I am Russian programmer", - они сразу все твои?насчёт штрафа
Этот комментарий в любом случае адекватнее идеи вычитать -50 птс за каждый неудачный сабмит.
Вся его поверхностная глупость контрастирует с достаточно разумной мыслью внутри, этим облачая идею таких вычетов.
А Trollface.jpg - это классика, стыдно не знать!
Ну вот... толсто же, толсто, зачем так...
Вообще можно устроить конкурс: кто напишет в каком-нибудь раунде по какой-нибудь задаче правильный код без явных обфускаций и наберёт на нём рекордное число неуспешных хаков - тот и есть лучший тролль.
Но блин, всё-таки упор должен быть сделан на умение решать задачи. То есть, сдача задачи с какой бы-то ни было попытки должна быть лучше, чем несдача, и существенно лучше.
А даже если ты снимаешь штраф за минусы сразу, это всё равно может побудить не решать задачу. "Вон сколько по ней минусов у всех/у нас, нафиг её решать, а то ещё кучу минусов получим и не сдадим".
Можно применить такие правила.
1) Ввести так называемое "особенное число" N. Если какая-либо команда набирает N штрафных баллов ей предоставляется бонус - первое место.
Число N вычисляется по результатам контеста - оно равно количеству штрафных баллов, набранному командой Orel SU.
2) Если предыдущий пункт не позволяет выявить победителя, смотрится состав участников. Победителем признаётся команда, в которой один из участников имеет так называемый "особенный хэндл" на Codeforces, назовём его S. Чтобы не копировать первый пункт, определим S до соревнования, например, Alex_KPR. Так как один хэндл не может принадлежать двум участникам, то победитель становится известен заранее (если же такого участника в командах нет - сильно удивляемся и чешем затылок). Остальные спорные места распределяются по системе "камень-ножницы-бумага" до четырёх побед.
1-100,00%
2-89,44%
3-81,65%
4-75,59%
20-41,70%
Хотя, конечно, количество минусов у конкретной команды по конкретной задаче — величина гораздо более “случайная”, чем умение или неумение задачу решать.
Если вы осилили мою попытку формальных определений, то остаётся такой вопрос: а хорошо это или плохо - когда система обладает указанным свойством?
Объективность есть безусловно, но в какой степени - неясно. Вот мне кажется, стоит обратить внимение на ситуацию в современном теннисе. В течение года в разных условиях (на траве, на грунте, на жёстком покрытии, на открытых-закрытых кортах) проводятся турниры, за которые начисляются определённые очки и т.д. Было бы интересно приспособить эту модель к СП. Навскидку -
1) Утвердить количество и форматы международных турниров. На каждом - личный и командный зачёт.
3) Вести рейтинги - командный и личный.
Плюсы - большая объективность и выход СП на совершенно новый уровень (по-моему).
Минусы - нет отдельного Чемпионата мира, хотя в конце года можно провести итоговый турнир, например, да и сложно переделывать текущий формат.
С другой стороны, елси сделать за 3 и больше попыток совсем маленький бонус, это удовлетворит все мнения. Например,
с 1 попытки 1/4 стоимости задачи
с 2 попытки 1/8 стоимости задачи
с 3 попытки 1/16 стоимости задачи
с 4 попытки 1/32 стоимости задачи
и так далее.
И так уже хватает правил, по которым можно поучаствовать и потом думать: “эх, вот если бы я закончил участвовать через 15 минут после начала, место было бы выше”...
Перед участником всё время встаёт выбор, например:
- какую задачу решать следующей, если реально успеть не более одной;
- обгонит ли он конкретного противника, если сдать сейчас чисто, или если сдать через минуту с одной штрафной попыткой, или если сдать через пять минут, потратив их на отладку;
- на сколько мест вниз он опустится при неудачном взломе, на сколько мест вверх поднимется при удачном взломе.
Если какая-то подобная информация не получается из текущей таблицы за несколько секунд, мне кажется, система оценки плоха. Потому что участника, задающегося такими вопросами, её ненужная техническая сложность отвлекает от решения стоящих перед ним задач.
Примеры:
- баллы за место в конкретном Гран-При в Открытом Кубке даются не по формуле, а по конкретной табличке GP30 или GP10 из 30 или 10 чисел. Прибавить двузначное число и понять, как меняется место в общем зачёте — дело нескольких секунд.
- фиксированные баллы за челлендж на TC и на CF легко позволяют понять потенциальный риск и потенциальный выигрыш. А теперь представим, что стоимость челленджа всё время колеблется и становится окончательно известна только после конца соревнования. Конкретные вопросы типа “хватит ли двух челленджей, чтобы занять Top-3 место по комнате, или нужно рисковать и делать третий” становятся практически неразрешимы.