Serve.cfg:problem:test sets

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Конфигурационные параметры задач/test_sets

Имя переменной: test_sets
Содержится в: problem
Используется: run
Тип содержимого: string
Может отсутствовать: да
Наследуется: нет
Значение по умолчанию: "" (пустая строка)
Может повторяться: да

Описание. Данная конфигурационная переменная позволяет задавать количество баллов, которое получает решение задачи, давшее правильный ответ на заданном множестве тестов. Данная конфигурационная переменная используется только в режиме турнира KIROV или OLYMPIAD (см. конфигурационную переменную score_system).

Данная конфигурационная переменная призвана бороться с угадыванием ответов. Например, если по условию задачи требуется дать ответ в форме "YES" или "NO", решение участника может всегда давать ответ "YES" или всегда давать ответ "NO", и такое «решение» может получить частичный балл (иногда довольно большой). Тогда чтобы бороться с такими программами, множество ответов "YES" и множество ответов "NO" могут быть указаны, как множества тестов, оцениваемые в 0 баллов. Теперь чтобы получить ненулевой балл решение участника должно хотя бы один раз правильно ответить "YES" и хотя бы один раз правильно ответить "NO".

Каждое значение конфигурационной переменной test_sets задаёт одно множество тестов, но переменная test_sets может быть повторена в описании задачи несколько раз, задавая несколько множеств тестов. Значение данной конфигурационной переменной не наследуется.

Значением одной конфигурационной переменной test_sets является строка-спецификация множества тестов, имеющая следующий формат (грамматика записана в нотации EBNF).

test_set_spec = test_num_list "=" set_score ;
test_num_list = { test_score } ;
set_score = NUMBER ;
test_score = NUMBER ;

Другими словами, спецификация множества тестов состоит из перечисления номеров тестов, за которым после знака -" следует число баллов, назначаемое за данное множество тестов. Такое правило срабатывает только если множество тестов, на которых решение участника дало правильный ответ, в точности совпадает с указанным множеством тестов.

Пример.

В следующем примере за успешное прохождение только тестов 2, 4, 5 решение

участника получает 1 балл, а за успешное прохождение тестов 1, 4, 6 — 2 балла.

test_sets = "2 4 5 = 1"
test_sets = "1 4 6 = 2"