Нормальная регрессия
Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Игорю и Олегу поручили построить линейную регрессию на наборе данных.
Сперва Игорь преобразовал все признаки включая целевой минимакс нормализацией, а затем
Олег построил линейную регрессию на нём. Оказалось, что полученное уравнение прямой не под-
ходит для дальнейшего предсказания, так как оно аппроксимирует нормализованные, а не ориги-
нальные данные. Тогда Олег решил построить уравнение прямой на оригинальном наборе данных,
но оказалось, что он потерялся.
Так как Игорь занимался нормализацией, он разобрался, как восстановить оригинальное урав-
нение прямой. Но Олег не поверил ему, он решил, что Игорь как-то запомнил оригинальный набор
данных и просто построил уравнения прямой для него. Тогда Игорь предложил Олегу как-нибудь
изменить информацию о нормализации и уравнении прямой, чтобы подтвердить, что оригинальное
уравнение прямой возможно восстановить и без набора данных.
Олег согласился на предложением Игоря, но теперь ему самому нужно узнать правильное решение задачи для проверки Игоря.
Формат входных данных
Первая строка содержит одно натуральное число N (1 ≤ N ≤ 10^5) — число признаков в наборе данных без учёта целевого признака.
Вторая строка содержит N + 1 разделённое пробелом целое число li (|li| ≤ 10^9) — минимальное значение для каждого признака до нормализации. Первые N из этих чисел чисел соответствуют
обычным признакам, а последнее — целевому.
Третья строка содержит N +1 разделённое пробелом целое число ui (|ui| ≤ 10^9) — максимальные значения в аналогичном формате. Гарантируется, что все максимумы строго больше соответствующих минимумов.
Четвёртая строка содержит N + 1 разделённое пробелом целое число ci (|ci| ≤ 10^9) — коэффициенты прямой, полученной после нормализации. Первые N из этих чисел чисел соответствуют признакам, а последнее — свободный коэффициент.
Пятая строка содержит одно натуральное число M (1 ≤ M ≤ 10^5) — число запросов Олега.
Далее идут M строк, каждая содержит описание соответствующего запроса. Каждый запрос
начинается с одной маленькой латинской буквы «l», «u», «c» или «q» в зависимости от его вида:
• Запрос вида «l» i v — запрос на изменение минимального значения до нормализации для i-го
признака на v.
• Запрос вида «u» i v — запрос на изменение максимального значения до нормализации для i-го
признака на v.
• Запрос вида «c» i v — запрос на изменение i-го коэффициента прямой на v.
• Запрос вида «q» i — запрос значения i-го коэффициента оригинальной прямой.
Гарантируется, что i — целое число и 1 ≤ i ≤ n + 1. Если i равняется n + 1 в запросах «l» и «u», то
это значит, что в запросе изменялся минимум или максимум целевого признака, а в запросах «c» и
«q» имелся в виду свободный коэффициент прямой. Гарантируется, что v — целое число и |v| ≤ 10^9, а после запросов «l» и «u» минимальное значение соответствующего признака по прежнему строго меньше максимального.
Формат выходных данных
Для каждого запроса коэффициента оригинальной прямой выведите его значение — число с
плавающей точкой.
Решение будет засчитано, если абсолютная или относительная погрешность не будет превышать
10^−9
Ввод:
4
1 1 1 1 0
2 2 2 2 1
1 2 3 4 5
5
q 5
l 1 0
u 2 6
c 3 4
q 5
Вывод:
-5.0
-3.4000000000000004
ПРИМЕР ПРИВЕДЁН ТОЛЬКО ДЛЯ СВОБОДНОГО КОЭФФИЦИЕНТА, ОБРАТИ НА ЭТО ВНИМАНИЕ, НАДО ПРАВИЛЬНО НАХОДИТЬ ЕЩЁ И ОБЫЧНЫЕ!!
Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
Игорю и Олегу поручили построить линейную регрессию на наборе данных.
Сперва Игорь преобразовал все признаки включая целевой минимакс нормализацией, а затем
Олег построил линейную регрессию на нём. Оказалось, что полученное уравнение прямой не под-
ходит для дальнейшего предсказания, так как оно аппроксимирует нормализованные, а не ориги-
нальные данные. Тогда Олег решил построить уравнение прямой на оригинальном наборе данных,
но оказалось, что он потерялся.
Так как Игорь занимался нормализацией, он разобрался, как восстановить оригинальное урав-
нение прямой. Но Олег не поверил ему, он решил, что Игорь как-то запомнил оригинальный набор
данных и просто построил уравнения прямой для него. Тогда Игорь предложил Олегу как-нибудь
изменить информацию о нормализации и уравнении прямой, чтобы подтвердить, что оригинальное
уравнение прямой возможно восстановить и без набора данных.
Олег согласился на предложением Игоря, но теперь ему самому нужно узнать правильное решение задачи для проверки Игоря.
Формат входных данных
Первая строка содержит одно натуральное число N (1 ≤ N ≤ 10^5) — число признаков в наборе данных без учёта целевого признака.
Вторая строка содержит N + 1 разделённое пробелом целое число li (|li| ≤ 10^9) — минимальное значение для каждого признака до нормализации. Первые N из этих чисел чисел соответствуют
обычным признакам, а последнее — целевому.
Третья строка содержит N +1 разделённое пробелом целое число ui (|ui| ≤ 10^9) — максимальные значения в аналогичном формате. Гарантируется, что все максимумы строго больше соответствующих минимумов.
Четвёртая строка содержит N + 1 разделённое пробелом целое число ci (|ci| ≤ 10^9) — коэффициенты прямой, полученной после нормализации. Первые N из этих чисел чисел соответствуют признакам, а последнее — свободный коэффициент.
Пятая строка содержит одно натуральное число M (1 ≤ M ≤ 10^5) — число запросов Олега.
Далее идут M строк, каждая содержит описание соответствующего запроса. Каждый запрос
начинается с одной маленькой латинской буквы «l», «u», «c» или «q» в зависимости от его вида:
• Запрос вида «l» i v — запрос на изменение минимального значения до нормализации для i-го
признака на v.
• Запрос вида «u» i v — запрос на изменение максимального значения до нормализации для i-го
признака на v.
• Запрос вида «c» i v — запрос на изменение i-го коэффициента прямой на v.
• Запрос вида «q» i — запрос значения i-го коэффициента оригинальной прямой.
Гарантируется, что i — целое число и 1 ≤ i ≤ n + 1. Если i равняется n + 1 в запросах «l» и «u», то
это значит, что в запросе изменялся минимум или максимум целевого признака, а в запросах «c» и
«q» имелся в виду свободный коэффициент прямой. Гарантируется, что v — целое число и |v| ≤ 10^9, а после запросов «l» и «u» минимальное значение соответствующего признака по прежнему строго меньше максимального.
Формат выходных данных
Для каждого запроса коэффициента оригинальной прямой выведите его значение — число с
плавающей точкой.
Решение будет засчитано, если абсолютная или относительная погрешность не будет превышать
10^−9
Ввод:
4
1 1 1 1 0
2 2 2 2 1
1 2 3 4 5
5
q 5
l 1 0
u 2 6
c 3 4
q 5
Вывод:
-5.0
-3.4000000000000004
ПРИМЕР ПРИВЕДЁН ТОЛЬКО ДЛЯ СВОБОДНОГО КОЭФФИЦИЕНТА, ОБРАТИ НА ЭТО ВНИМАНИЕ, НАДО ПРАВИЛЬНО НАХОДИТЬ ЕЩЁ И ОБЫЧНЫЕ!!