Difference between revisions of "Serve.cfg:problem:date penalty"
(Created page with "Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/[[serve...") |
|||
Line 43: | Line 43: | ||
штрафных очков, если она послана 5-11 апреля, она получает одно штрафное очко, а если | штрафных очков, если она послана 5-11 апреля, она получает одно штрафное очко, а если | ||
12 апреля и позднее - 2 штрафных очка. | 12 апреля и позднее - 2 штрафных очка. | ||
+ | |||
+ | (С версии 2.3.21) | ||
+ | Формат <tt>ADD-VALUE</tt> расширен и поддерживается плавное изменение штрафа в зависимости от времени посылки. | ||
+ | BASE[(+|-)DECAY[/SCALE]] | ||
+ | Здесь <tt>BASE</tt> - значение, прибавляемое (или отнимаемое) к количеству баллов за задачу, полученному в результате тестирования. <tt>DECAY</tt> значение, на которое изменяется балл со временем (неотрицательное целое число), <tt>SCALE</tt> — масштабный коэффицент (секунды) (положительное целое число). В записи масштрабного коэффициента допускается использовать суффиксы <tt>m</tt>, <tt>h</tt>, <tt>d</tt> и <tt>w</tt>, означающие минуты, часы, дни и недели соответственно. Один день полагается равным 24 часам, одна неделя — 7 дням. | ||
+ | |||
+ | Штраф к баллам в зависимости от времени вычисляется по следующей формуле: | ||
+ | TIME_PENALTY = BASE + (SUBMIT_TIME - BASE_TIME) / SCALE * DECAY | ||
+ | Здесь <tt>SUBMIT_TIME</tt> - это время сдачи решения, <tt>BASE_TIME</tt> - это базовое время, которое берется по следующим | ||
+ | правилам: | ||
+ | * если данная спецификация <tt>date_penalty</tt> в секции определения задачи не является первой, то берется поле <tt>DATE</tt> предыдущей спецификации <tt>date_penalty</tt>; | ||
+ | * в противном случае, если для задачи задана конфигурационная переменная <tt>[[serve.cfg:problem:start_time|start_time]]</tt>, используется это время; | ||
+ | * в противном случае, если турнир начался, используется время начала турнира; | ||
+ | * в противном случае штраф к баллам не вычисляется. | ||
+ | |||
+ | Балл за задачу не может быть отрицательным, то есть если штраф к баллам больше количества баллов, которое получило решение при тестировании, решение оценивается в 0 баллов. | ||
+ | |||
+ | Например, | ||
+ | start_date = "2012/03/20" | ||
+ | date_penalty = "2012/12/31 0-1/d" | ||
+ | Начиная с 20 марта 2012 года за каждый день просрочки накладывается штраф 1 балл. Эта спецификация действует до 31 декабря 2012 года. |
Latest revision as of 05:11, 4 April 2012
Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Конфигурационные параметры задач/date_penalty
Имя переменной: | date_penalty |
Содержится в: | problem |
Используется: | serve |
Тип содержимого: | спецификации штрафа |
Может отсутствовать: | да |
Наследуется: | нет |
Значение по умолчанию: | не установлено |
Может повторяться: | да |
Версия ejudge: | начиная с 2.1.28. |
Описание. Данная конфигурационная переменная позволяет назначать штраф за посылку в зависимости от времени сдачи задачи. Например, посылка, принятая раньше определённой даты, не штрафуется, а после этой даты накладывается некоторый штраф и т. д. (см. пример ниже). В рамках описания одной задачи определение переменной date_penalty может повторяться несколько раз. Каждое новое Каждое определение добавляет новую спецификацию штрафования к уже существующим. Значение переменной date_penalty не наследуется от абстрактных задач. Спецификации date_penalty одной задачи не зависят от date_penalty других задач. Спецификации упорядочены и проверяются в порядке их задания в конфигурационном файле.
Каждая спецификация штрафа имеет вид
DATE ADD-VALUE
где DATE — календарная дата, задаваемая в стандартном для ejudge формате YYYY/MM/DD [hh[:mm[:ss]]], ADD-VALUE — значение, прибавляемое к количеству баллов, полученному в результате тестирования. Получившееся значение не может быть меньше 0 (в этом случае оно устанавливается в 0) и больше максимального значения баллов за данную задачу (в этом случае оно устанавливается в максимальное количество баллов). Штрафование в зависимости от времени работает только в режиме турнира KIROV.
Пример.
date_penalty = "2004/04/05 0" date_penalty = "2004/04/12 -1" date_penalty = "2005/01/01 -2"
В данном примере если попытка по задаче послана до 5 апреля 2004 г., она не получает штрафных очков, если она послана 5-11 апреля, она получает одно штрафное очко, а если 12 апреля и позднее - 2 штрафных очка.
(С версии 2.3.21) Формат ADD-VALUE расширен и поддерживается плавное изменение штрафа в зависимости от времени посылки.
BASE[(+|-)DECAY[/SCALE]]
Здесь BASE - значение, прибавляемое (или отнимаемое) к количеству баллов за задачу, полученному в результате тестирования. DECAY значение, на которое изменяется балл со временем (неотрицательное целое число), SCALE — масштабный коэффицент (секунды) (положительное целое число). В записи масштрабного коэффициента допускается использовать суффиксы m, h, d и w, означающие минуты, часы, дни и недели соответственно. Один день полагается равным 24 часам, одна неделя — 7 дням.
Штраф к баллам в зависимости от времени вычисляется по следующей формуле:
TIME_PENALTY = BASE + (SUBMIT_TIME - BASE_TIME) / SCALE * DECAY
Здесь SUBMIT_TIME - это время сдачи решения, BASE_TIME - это базовое время, которое берется по следующим правилам:
- если данная спецификация date_penalty в секции определения задачи не является первой, то берется поле DATE предыдущей спецификации date_penalty;
- в противном случае, если для задачи задана конфигурационная переменная start_time, используется это время;
- в противном случае, если турнир начался, используется время начала турнира;
- в противном случае штраф к баллам не вычисляется.
Балл за задачу не может быть отрицательным, то есть если штраф к баллам больше количества баллов, которое получило решение при тестировании, решение оценивается в 0 баллов.
Например,
start_date = "2012/03/20" date_penalty = "2012/12/31 0-1/d"
Начиная с 20 марта 2012 года за каждый день просрочки накладывается штраф 1 балл. Эта спецификация действует до 31 декабря 2012 года.