QOJ.ac

QOJ

时间限制: 4 s 内存限制: 1024 MB 总分: 100

#1167. Ожидаемое расстояние

统计

Даны две целочисленные последовательности: $\{a_i\}$ длины $N - 1$ и $\{c_i\}$ длины $N$. Построим дерево $T_N$ с $N$ вершинами следующим образом:

  • $T_1$ — это дерево, состоящее только из вершины 1.
  • Для $i > 1$, $T_i$ соединяет вершину $i$ с одной из вершин $T_{i-1}$. Вероятность того, что будет выбрана вершина $j$, равна $\frac{a_j}{a_1 + \dots + a_{i-1}}$. Длина добавленного ребра при этом вычисляется как $c_i + c_j$.
  • Когда $T_N$ построено, процесс останавливается.

Вам дано $Q$ запросов. Каждый запрос представляет собой пару вершин. Для каждого запроса $(u, v)$ вычислите математическое ожидание расстояния между $u$ и $v$ в $T_N$.

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

Первая строка входных данных содержит два целых числа $N$ и $Q$: количество вершин и количество запросов соответственно ($2 \le N, Q \le 3 \cdot 10^5$).

Вторая строка содержит $N - 1$ целое число $a_1, a_2, \dots, a_{N-1}$ ($1 \le a_i \le 2000$).

Третья строка содержит $N$ целых чисел $c_1, c_2, \dots, c_N$ ($1 \le c_i \le 2000$).

Каждая из следующих $Q$ строк описывает один запрос и содержит два целых числа $u$ и $v$, разделенных пробелом: номера вершин, для которых нужно найти математическое ожидание расстояния ($1 \le u, v \le N$).

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

Можно доказать, что каждый ответ является рациональным числом и может быть записан в виде $ans_i = \frac{p_i}{q_i}$, где $p_i$ и $q_i$ — взаимно простые неотрицательные целые числа и $0 < q_i < 10^9 + 7$. Для каждого запроса выведите целое число $(p_i \cdot q_i^{-1}) \pmod{10^9 + 7}$.

Примеры

Примеры 1

5 7
1 1 1 1
1 2 4 8 16
1 3
2 5
4 3
1 5
3 3
4 5
1 2
7
666666697
15
666666697
0
333333366
3

Примеры 2

5 4
17 19 23 29
2 3 5 7 11
1 2
3 4
5 2
3 5
5
927495315
106531441
450222593

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.