QOJ.ac

QOJ

Time Limit: 4 s Memory Limit: 1024 MB Total points: 100

#1167. Nilai Harapan Jarak

Statistics

Diberikan dua urutan bilangan bulat: $\{a_i\}$ sepanjang $N-1$ dan $\{c_i\}$ sepanjang $N$. Kita akan membangun pohon $T_N$ dengan $N$ simpul sebagai berikut:

  • $T_1$ adalah pohon yang hanya terdiri atas simpul $1$.
  • Untuk $i > 1$, $T_i$ menghubungkan simpul $i$ ke salah satu simpul pada $T_{i-1}$. Peluang simpul $j$ dipilih adalah $\frac{a_j}{a_1 + \cdots + a_{i-1}}$. Panjang sisi yang ditambahkan kemudian dihitung sebagai $c_i + c_j$.
  • Ketika $T_N$ telah dibangun, proses berhenti.

Diberikan $Q$ kueri. Setiap kueri adalah sepasang simpul. Untuk setiap kueri $(u,v)$, hitung nilai harapan jarak antara $u$ dan $v$ pada $T_N$.

Masukan

Baris pertama masukan berisi dua bilangan bulat $N$ dan $Q$: berturut-turut banyaknya simpul dan banyaknya kueri ($2 \le N,Q \le 3 \cdot 10^5$).

Baris kedua berisi $N-1$ bilangan bulat $a_1,a_2,\ldots,a_{N-1}$ ($1 \le a_i \le 2000$).

Baris ketiga berisi $N$ bilangan bulat $c_1,c_2,\ldots,c_N$ ($1 \le c_i \le 2000$).

Setiap dari $Q$ baris berikutnya mendeskripsikan satu kueri dan berisi dua bilangan bulat $u$ dan $v$ yang dipisahkan spasi: nomor simpul yang nilai harapan jaraknya harus dicari ($1 \le u,v \le N$).

Keluaran

Dapat dibuktikan bahwa setiap jawaban adalah bilangan rasional dan dapat ditulis dalam bentuk $ans_i = \frac{p_i}{q_i}$, dengan $p_i$ dan $q_i$ adalah bilangan bulat tak negatif yang relatif prima dan $0 < q_i < 10^9 + 7$. Untuk setiap kueri, cetak bilangan bulat $(p_i \cdot q_i^{-1}) \bmod (10^9 + 7)$.

Contoh

Masukan 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

Keluaran 1

7
666666697
15
666666697
0
333333366
3

Masukan 2

5 4
17 19 23 29
2 3 5 7 11
1 2
3 4
5 2
3 5

Keluaran 2

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.