Проверка прогнозов шахматных партий
Условие
Перед шахматным турниром для каждой партии был записан прогноз ожидаемого результата белых. Прогноз p задаётся целым числом от 0 до 1000 и означает значение p / 1000: ожидаемое число очков белых.
Фактический результат кодируется числом r: 0 означает победу чёрных, 1 означает ничью, 2 означает победу белых. Тогда фактическое число очков белых равно r / 2.
У некоторых партий прогноз отсутствует и записан как NA. Такие партии полностью исключаются из проверки. Оставшиеся партии сохраняют порядок во входных данных и по очереди распределяются по k фолдам: первая оставшаяся партия попадает в фолд 1, вторая в фолд 2, и так далее, после фолда k снова идёт фолд 1.
Для каждого значения k из запроса требуется вычислить средний Brier score по фолдам. Если в фолде находятся партии с прогнозами p_i и результатами r_i, его метрика равна
B = (1 / c) * Σ (p_i / 1000 - r_i / 2)^2,
где c — число партий в этом фолде. Ответом является среднее арифметическое метрик всех k фолдов.
При равенстве числовых значений никаких выборов не производится: для каждого значения k выводится его собственное значение метрики.
Формат ввода
В первой строке дано целое число n — число партий в журнале.
В следующих n строках записаны три значения: номер тура round, прогноз p и результат r. Прогноз p является целым числом либо строкой NA.
После журнала дана строка с целым числом q — числом запросов. В следующих q строках дано по одному целому числу k.
Формат вывода
Для каждого запроса выведите в отдельной строке средний Brier score по k фолдам.
Каждое значение выводится ровно с четырьмя знаками после десятичной точки. Округление производится до ближайшего значения с четырьмя знаками после точки, а при точной середине округление производится вверх.
Ограничения
1 ≤ n ≤ 4000.
1 ≤ round ≤ 500.
Прогноз p равен NA или целому числу от 0 до 1000.
0 ≤ r ≤ 2.
Хотя бы у одной партии прогноз не равен NA.
1 ≤ q ≤ 20.
Для каждого запроса 1 ≤ k ≤ m, где m — число партий, у которых прогноз не равен NA.
Поэтому после исключения партий с NA каждый из k фолдов содержит хотя бы одну партию.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Перечневые олимпиады по информатике — олимпиады перечня Минобрнауки, их уровни и что нужно к диплому
- БВИ по олимпиадам: в какие вузы берут — правила приёма вузов, разобранные построчно, со ссылкой на приказ у каждой строки