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

Автор Sammarize, 11 лет назад, По-русски

Итак, давайте поговорим о том, как следует оценивать штрафные попытки по задачам.

Толчком к подобным размышлениям служит следующая мысль. С точки зрения "качества программирования", если можно так выразиться, есть большая разница между задачей, сданной с первой же попытки и задаче, сданной после одной неверной попытки. Тогда как сдана задача с 10 или 11 попытки — существенной разницы нет. Однако же, разница в баллах сейчас одна и та же: 50 баллов (если, конечно, стоимость задачи ещё не опустилась до 30% стоимости задачи). В связи с этим, есть следующее конструктивное предложение: сделать стоимость минусов убывающей.

Например, если задача имеет стоимость 1000, это может выглядеть так:

номер попыткиштраф за минуссуммарный штраф
1100100
279179
362241
450291
539330
725386
1012432
153461
201469
> 200469

Примерно такие значения получаются, если предположить, что стоимость минуса будет убывать в геометрической прогрессии, уменьшаясь в два раза после каждых трёх минусов.

Таким образом получается, что минусы после 20ого (часто ли вы такое видите?) даются бесплатно. Получение трёх минусов карается четвертью стоимости задачи, пяти — третью стоимости, а сделав двузначное число штрафных попыток, Вы теряете почти половину стоимости задачи.

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

»
11 лет назад, # |
  Проголосовать: нравится +83 Проголосовать: не нравится

Что-то не вижу я этой разницы. Есть разница между чистой сдачей и сдачей с ва. Просто красивей сдавать чисто :) А разница между первым ВА и пятым какая-то сомнительная. Можно потратить 5 сабмитов на исправление одного и того же бага. А можно на исправление 10 разных.

Вот разница между ВА из-за недописанного нолика в размере массива и ВА из-за неверного алгоритма есть на мой взгляд. Но она вполне себе учитывается временем, затрачиваемым на исправление бага.

Предлагаю решить проблему методом Котёнка, тоесть оставить штрафы в покое.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    10 разных багов в одной задаче? Не исключено, что такого вообще никогда не было в истории спортивного программирования; в любом случае, в подавляющем большинстве случаев, много штрафных попыток по одной задаче — это безуспешные попытки исправить один и тот же баг.

    А теперь представь себе ситуацию: два участника А и В сдали одни и те же пять задач примерно синхронно. Но А сдал каждую задачу с +1, а В все, кроме одной чисто, а одну — с +7. Сделал баг в одной из задач и долго пытался его найти. Причём это может быть одна малозаметная опечатка типа "=" вместо "+=" в каком-нибудь отдельно обрабатываемом случае. И он достоин быть ниже, чем А?

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      По-моему, да, вполне достоин. Ничем не могу аргументировать своё мнение, просто мне так говорит мой здравый смысл.

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Ну а может быть так: участник А каждый раз просто забывал убрать отладочный вывод, или работал со стандартным I\O вместо файлового, или просто были глупые опечатки наподобие той, которую привел ты. Участник же В 7 раз пытался сдать неверное решение по последней задаче и только потом написал правильное. Как системе отличать причины ошибок?

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится -16 Проголосовать: не нравится

        Нет-нет. Когда ты делаешь одну и ту же глупую ошибку в каждой задаче, то это просто идиотизм. Или неопытность, но настолько неопытные участники обычно не сдают по 5 задач.

        Разница в том, что несколько минусов по разным задачам — это точно различные ошибки (может быть, одинаковые, но каждую из них по отдельности надо было сделать). А несколько минусов по одной и той же задаче — это, скорее всего, один-два бага, которые с трудом можно найти.

»
11 лет назад, # |
Rev. 3   Проголосовать: нравится +4 Проголосовать: не нравится

Помнится, аналогичный вопрос вставал при обсуждении системы CPR.
Тогда пришли к выводу, что лёгкость "ручного" подсчёта приоритетнее небольшого улучшения объективности результатов.

Кстати, есть ещё вариант — блокировать возможность отправки(или замораживать проверку) на 1/2/5 минут после неудачного сабмита. Получится, что ошибка в простых задачах будет стоить больше, чем ошибка в сложных.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +13 Проголосовать: не нравится

    Чтобы если у тебя массив маленький, ты потратил лишние 5 минут, да. Пока кто-то другой переписывает за это время всю задачу.

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится -11 Проголосовать: не нравится

      Кулдаун решает проблему: если уверен, что знаешь где баг, то можешь отправить и решать дальше; не уверен — сиди и ищи.

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится +9 Проголосовать: не нравится

        Кулдаун зачем-то уравнивает таких двух людей.

        • »
          »
          »
          »
          »
          11 лет назад, # ^ |
            Проголосовать: нравится -8 Проголосовать: не нравится

          Человек с мелким багом быстро отправит(проверяться оно начнёт не сразу) и пойдёт писать следующую, а человек с концептуальной проблемой будет тратить это время на переписывание.

»
11 лет назад, # |
  Проголосовать: нравится +42 Проголосовать: не нравится

В ACM у каждой неудачной посылки штраф 20 минут. И никто не жалуется.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +10 Проголосовать: не нравится

    В ACM в первую очередь учитывается кол-во решенных задач. Т.е. если один участник сдал одну задачу быстро и с первой попытки, а второй сдал две задачи, каждую с 15-20-ой попытки, то второй займет место выше первого.

    На codeforces первый за задачу получил бы около 980 баллов (если начальная стоимость задачи 1000). Второй за свои 2 задачи получил бы 600 баллов. Первый займет место выше второго.

    Думаю, эту разницу в стоимости задач стоит учитывать, чтоб сравнивать правила ACM и codeforces.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +10 Проголосовать: не нравится

    В ACM никто не жалуется, потому что никому не приходит в голову жаловаться. И кроме того, в ACM участникам негде это обсудить так, чтобы за этим могла понаблюдать администрация. А на TopCoder'е, например, вообще хрен угадаешь, сколько тебе будет стоить перепосылка или пятиминутное тестирование перед отправкой. И тоже никто не жалуется.

»
11 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

На мой взгляд, твое предложение звучит объективнее, чем то, что мы имеем сейчас. Но суть в том, что правила, к счастью, одни для всех, и заставляют всех участников выбирать стратегию, которая выгодна при этих правилах. Если текущие правила объективными назвать не каждый сможет, то справедливыми, думаю, смогут все.

»
11 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

Изменение которое чтото меняет в 1% случаев. По моим ощущениям на кф почти всегда срабатывает один из следующих вариантов:

  1. Либо ты сдаешь с первой попытки и тогда в конце у тебя либо ОК, либо fail в зависимости от силы претестов.

  2. Либо ты пытаешься упихать какуюто полную лажу (которую тебе ломают/не проходит претесты). И в конце остаешься с -7.

Ни в одном из этих вариантов количество баллов за неудачу не играет роли.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится

    Часто ещё бывает ситуация с +1/+2.
    Сдаёшь, не замечаешь крайний случай, ломают/не проходит претесты, исправляешь.
    Для +2 надо исправить что-нибудь не то под воздействием монитора :)

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится +8 Проголосовать: не нравится

      Да, соглашусь про +1 (ОК с +2 бывает гораааздо реже :), что и говорить про большие минуса). Но даже при условии этих вариантов предложение автора не вносит практически никаких изменений в существующие правила.

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится -7 Проголосовать: не нравится

        Возможно, тогда будет разумным предложить оценить масштаб этих возможных "изменений" на грядущем контесте. Если итоговая таблица заметно изменится, то почему бы и не говорить, что это хорошее предложение.

        Только вот кто этим займётся? :)