Шаг градиента по заявке
Условие
Провайдер оценивает время решения заявки по её приоритету. Для заявки с приоритетом p модель предсказывает число часов по формуле z = a + b · p, где a и b — параметры модели.
Для выбранной заявки с известным фактическим временем решения y используется квадратичная функция потерь L = (z - y)^2. Один стохастический шаг градиентного спуска с коэффициентом обучения eta изменяет параметры так:
a_new = a - eta · 2 · (z - y)
b_new = b - eta · 2 · (z - y) · p.
В последней строке входа указаны номер заявки для шага и коэффициент обучения. Необходимо выполнить ровно один шаг только по этой заявке. Заявки с неизвестным временем решения не используются, при этом гарантируется, что для запрошенной заявки время решения известно. При равенстве значений приоритета строки не объединяются: каждая строка остаётся отдельной заявкой.
Формат ввода
В первой строке дано целое число n — количество заявок.
В следующих n строках записаны два значения: целое p — приоритет заявки и фактическое время решения y в часах. Вместо времени решения может стоять строка NA, если заявка ещё не закрыта.
В следующей строке записаны два вещественных числа a и b — начальные параметры модели.
В последней строке записаны целое число k и вещественное число eta: номер заявки для стохастического шага и коэффициент обучения. Заявки нумеруются от 1 в порядке входных данных.
Формат вывода
Выведите a_new и b_new через пробел после одного стохастического шага по заявке номер k.
Каждое число необходимо округлить до четырёх знаков после точки. Гарантируется, что ни одна из двух полученных координат не находится ровно посередине между двумя числами с четырьмя знаками после точки.
Ограничения
1 ≤ n ≤ 2000.
0 ≤ p ≤ 100.
Если время решения известно, то 0.00 ≤ y ≤ 720.00, в записи не более двух знаков после точки.
-1000.00 ≤ a, b ≤ 1000.00, в записи не более двух знаков после точки.
1 ≤ k ≤ n.
0.000 ≤ eta ≤ 1.000, в записи не более трёх знаков после точки.
Для заявки номер k значение y не равно NA. Пропуски в остальных строках допустимы и не влияют на вычисление.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- На программиста по олимпиаде: путь по классам — что даёт диплом, куда с ним берут на ИТ-направления и почему решает 9 класс
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт