AdditionalFile5667.zip
#5667. 「JOI 2026 Final Day2」JOI 巡游 2
标签: 传统 | 时间限制: 7000 ms | 内存限制: 1024 MiB |
题目描述
题目译自 JOI 2026 Final Day2 T2 「JOI ツアー 2 / JOI Tour 2」
JOI 国有 N 个城市,编号为 1 到 N。此外,JOI 国有 N−1 条道路,编号为 1 到 N−1。道路 j (1≤j≤N−1) 双向连接城市 Uj 和城市 Vj。从任何一个城市出发,都可以通过若干条道路到达任何另一个城市。
JOI 国的每个城市都有一家商店,城市 i (1≤i≤N) 的商店出售纪念品,价格为 Ai。
JOI 国今年计划开展 M 个巡游。第 k (1≤k≤M) 个巡游从城市 Sk 出发,通过道路移动到城市 Tk,且不重复经过同一个城市。也就是说,第 k 个巡游会访问城市 Sk 和 Tk 之间的简单路径上的所有城市。保证 Sk=Tk。请注意,根据 JOI 国的结构(树形结构),巡游所访问的城市序列是唯一确定的。
你计划参加其中一个巡游,并在访问的城市中恰好选择两个不同的城市各购买一件纪念品。此外,你希望为纪念品准备的预算刚好用完,因此决定针对 Q 种预算候选值,调查每种预算下对应的购买方案有多少种。
给定 JOI 国的道路、纪念品价格、巡游信息以及预算候选值 B1,B2,…,BQ,请编写一个程序,计算选择巡游及购买纪念品城市的方法总数。更形式化地,对于每个 q (1≤q≤Q),求出满足以下所有条件的整数组 (k,u,v) 的个数。
- 1≤k≤M。
- 1≤u<v≤N。
- 第 k 个巡游访问了城市 u 和 v。
- Au+Av=Bq。
输入格式
第一行包含一个整数 N。
第二行包含 N 个整数 A1,A2,…,AN。
接下来的 N−1 行,其中第 j 行包含两个整数 Uj 和 Vj。
接下来一行包含一个整数 M。
接下来的 M 行,其中第 k 行包含两个整数 Sk 和 Tk。
接下来一行包含一个整数 Q。
最后一行包含 Q 个整数 B1,B2,…,BQ。
输出格式
在标准输出中输出 Q 行。第 q (1≤q≤Q) 行应输出在预算刚好为 Bq 时,选择巡游及购买纪念品城市的方法总数。
样例 1
输入
8
1 2 3 2 1 2 3 2
2 3
7 8
4 3
1 2
7 3
2 5
6 1
4
1 4
1 6
2 5
3 8
7
1 2 3 4 5 6 16
输出
0
0
4
2
4
1
0
首先,每个巡游访问的城市如下:
- 第 1 个巡游访问城市 1,2,3,4。
- 第 2 个巡游访问城市 1,6。
- 第 3 个巡游访问城市 2,5。
- 第 4 个巡游访问城市 3,7,8。
如果用 (k,u,v) 表示参加第 k 个巡游并在城市 u,v 购买纪念品的方法,对于每个预算候选值,刚好用完预算的方法如下:
- 预算为 1 的方法有 0 种。
- 预算为 2 的方法有 0 种。
- 预算为 3 的方法有 (1,1,2),(1,1,4),(2,1,6),(3,2,5),共 4 种。
- 预算为 4 的方法有 (1,1,3),(1,2,4),共 2 种。
- 预算为 5 的方法有 (1,2,3),(1,3,4),(4,3,8),(4,7,8),共 4 种。
- 预算为 6 的方法有 (4,3,7),共 1 种。
- 预算为 16 的方法有 0 种。
此样例满足子任务 1,3,7,9,11 的限制。
样例 2
输入
8
8 2 3 6 1 4 1 7
1 2
2 3
3 4
4 5
5 6
6 7
7 8
1
1 8
5
2 4 5 10 15
输出
1
2
3
3
1
此样例满足子任务 1,2,3,6,7,8,9,10,11 的限制。
数据范围与提示
对于所有输入数据,满足:
- 2≤N≤100000。
- 1≤Ai≤N (1≤i≤N)。
- 1≤Uj≤N (1≤j≤N−1)。
- 1≤Vj≤N (1≤j≤N−1)。
- 任意两个城市之间都可以通过若干条道路互相到达。
- 1≤M≤200000。
- 1≤Sk≤N (1≤k≤M)。
- 1≤Tk≤N (1≤k≤M)。
- Sk=Tk (1≤k≤M)。
- 1≤Q≤2000。
- 1≤B1<B2<⋯<BQ≤2N。
- 所有输入的数值均为整数。
详细子任务附加限制及分值如下表所示。
| 子任务 |
分值 |
附加限制 |
| 1 |
3 |
N≤100,M≤100,Q≤100 |
| 2 |
4 |
N≤5000,Uj=j,Vj=j+1 (1≤j≤N−1) |
| 3 |
5 |
N≤5000 |
| 4 |
6 |
Q=1,Uj=j,Vj=j+1 (1≤j≤N−1) |
| 5 |
10 |
Q=1 |
| 6 |
7 |
M≤1000,Uj=j,Vj=j+1 (1≤j≤N−1) |
| 7 |
12 |
M≤1000 |
| 8 |
10 |
N≤50000,M≤50000,Uj=j,Vj=j+1 (1≤j≤N−1) |
| 9 |
15 |
N≤50000,M≤50000 |
| 10 |
11 |
Uj=j,Vj=j+1 (1≤j≤N−1) |
| 11 |
17 |
无附加限制 |