Олимпиадный тренинг

Задача . H. Подарок Санты


У Санты есть бесконечное число конфет каждого из \(m\) вкусов. Вам дано корневое дерево с \(n\) вершинами. Корень дерева — вершина с номером \(1\). Каждая вершина содержит ровно одну конфету, \(i\)-я вершина содержит конфету вкуса \(f_i\).

Иногда Санта боится, что конфеты вкуса \(k\) испортились. Он выбирает любую вершину \(x\) случайным образом и посылает поддерево вершины \(x\) кондитерам на замену. Во время замены все конфеты вкуса \(k\) в поддереве заменяются на новые конфеты того же вкуса, а конфеты не вкуса \(k\) остаются неизменными. После замены дерево возвращается в состояние, в котором оно было до замены.

Настоящая цена замены одной конфеты вкуса \(k\) равна \(c_k\) (дана для каждого \(k\)). Однако, для простоты вычислений кондитеры берут за каждое посланное им поддерево одинаковую сумму \(C\) вне зависимости от того, какое поддерево выбрано, сколько конфет в поддереве и какого вкуса они.

Предположим, что для заданного вкуса \(k\) вероятность выбора каждой вершины Сантой для посылки на замену одинакова для всех вершин. Вам нужно найти математическое ожидание ошибки в подсчёте стоимости замены конфет вкуса \(k\). Ошибка в подсчёте стоимости вычисляется так:

\(\) Ошибка\ E(k) =\ (настоящая\ стоимость\ замены\ –\ цена,\ взятая\ кондитерами) ^ 2.\(\)

Обратите внимание, что настоящая стоимость замены равна стоимости замены одной конфеты вкуса \(k\), умноженной на количество конфет этого вкуса в поддереве.

Иногда Санта заменяет конфету в вершине \(x\) на конфету некоторого вкуса из его кармана.

Ваша программа должна уметь обрабатывать два типа запросов:

  • Изменить вкус конфеты в вершине \(x\) на вкус \(w\).
  • Подсчитайте математическое ожидание ошибки подсчёта стоимости замены конфет для заданного вкуса \(k\).
Входные данные

Первая строка входных данных содержит четыре целых числа \(n\) (\(2 \leqslant n \leqslant 5 \cdot 10^4\)), \(m\), \(q\), \(C\) (\(1 \leqslant m, q \leqslant 5 \cdot 10^4\), \(0 \leqslant C \leqslant 10^6\)) — число вершин в графе, количество различных вкусов конфет, число запросов и цена, которую кондитеры берут за замену поддерева? соответственно.

Вторая строка содержит \(n\) целых чисел \(f_1, f_2, \dots, f_n\) (\(1 \leqslant f_i \leqslant m\)), где \(f_i\) — изначальный вкус конфеты в \(i\)-й вершине.

В третьей строке содержится \(n - 1\) целое число \(p_2, p_3, \dots, p_n\) (\(1 \leqslant p_i \leqslant n\)), где \(p_i\) — родитель \(i\)-й вершины.

Следующая строка содержит \(m\) целых чисел \(c_1, c_2, \dots c_m\) (\(1 \leqslant c_i \leqslant 10^2\)), где \(c_i\) — стоимость замены одной конфеты со вкусом \(i\).

Следующие \(q\) строк описывают запросы. Каждая строка начинается с целого числа \(t\) (\(1 \leqslant t \leqslant 2\)) — типа запроса.

Если \(t = 1\), тогда эта строка описывает запрос первого типа. За ним следует два целых числа \(x\) и \(w\) (\(1 \leqslant  x \leqslant  n\), \(1 \leqslant  w \leqslant m\)) — Санта заменяет конфету в вершине \(x\) на конфету вкуса \(w\).

Иначе, если \(t = 2\), строка описывает запрос второго типа и после него следует целое число \(k\) (\(1 \leqslant k \leqslant m\)) — выведите математическое ожидание ошибки в подсчёте стоимости замены конфет для данного вкуса \(k\).

Вершины пронумерован с \(1\) до \(n\). Вершина \(1\) является корнем.

Выходные данные

Выведите ответ на каждый запрос второго типа в отдельной строке.

Ваш ответ будет принят, если его относительная или абсолютная погрешность не превышает \(10^{-6}\).

Формально, пусть ваш ответ равен \(a\), а ответ жюри равен \(b\). Ваш ответ будет засчитан, если и только если \(\frac{|a-b|}{max(1,b)}\leqslant 10^{-6}\).

Примечание

Для \(1\)-го запроса ошибка в подсчёте стоимости замены для вкуса \(1\) равна \(66^2\), \(66^2\) и \((-7)^2\), если выбран \(1\), \(2\) и \(3\) соответственно. Так как вероятность выбора каждой из вершин одинакова, математическое ожидание ошибки равно \(\frac{66^2+66^2+(-7)^2}{3}\).

Аналогично, для \(2\)-го запроса ожидаемое значение ошибки равно \(\frac{41^2+(-7)^2+(-7)^2}{3}\).

После \(3\)-го запроса, вкус конфеты на вершине \(2\) изменится с \(1\) на \(3\).

Для \(4\)-го запроса ожидаемое значение ошибки равно \(\frac{(-7)^2+(-7)^2+(-7)^2}{3}\).

Аналогично для \(5\)-го запроса ожидаемое значение ошибки равно \(\frac{89^2+41^2+(-7)^2}{3}\).


Примеры
Входные данныеВыходные данные
1 3 5 5 7
3 1 4
1 1
73 1 48 85 89
2 1
2 3
1 2 3
2 1
2 3
2920.333333333333
593.000000000000
49.000000000000
3217.000000000000

time 4000 ms
memory 512 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя