#P11993. [JOIST 2025] 迁移计划 / Migration Plan

    ID: 13637 远端评测题 7500ms 2048MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>线段树树状数组2025JOI(日本)线段树合并

[JOIST 2025] 迁移计划 / Migration Plan

背景

本题测试点极大,评测时可能需要等待较长时间加载测试点。

题目描述

JOI 王国由编号从 11 到 NN 的 NN 个城市组成。这些城市通过 N−1N − 1 条单向道路连接。具体来说,对于每个 i=2,3,…,Ni = 2, 3, \ldots, N,存在一条从城市 ii 通向城市 PiP_i 的道路。此处保证 1≤Pi<i1 \leq P_i < i。

每个城市有一个定义好的危险等级。首都(城市 11)的危险等级为 00。对于城市 ii(2≤i≤N2 \leq i \leq N),其危险等级定义为从该城市到城市 11 的路径中经过的道路数量。根据 JOI 王国的结构,从任意城市 ii 到城市 11 的路径存在且唯一。

当前,城市 ii(1≤i≤N1 \leq i \leq N)居住着 KiK_i 只海狸。JOI 王国的总统 Bitaro 计划实施海狸迁移计划。该计划将在 QQ 天内执行。在第 jj 天(1≤j≤Q1 \leq j \leq Q),以下三类事件之一会发生:

  • 迁移:当时刻所有居住在危险等级为 XjX_j 的城市的海狸会迁移到危险等级为 YjY_j 的城市,该城市需满足从当前城市出发沿道路行进可达。保证 0≤Yj<Xj0 \leq Y_j < X_j。根据 JOI 王国的结构,每只海狸的迁移目的地唯一确定。
  • 迁入:由于王国外的迁入,城市 AjA_j 的海狸数量增加 LjL_j。
  • 调查: 调查当前时刻城市 BjB_j 居住的海狸数量。

作为 Bitaro 的下属,你发现无需实地考察即可根据迁移计划信息计算出每次调查事件时的海狸数量。

给定 JOI 王国的结构、各城市当前的海狸数量及迁移计划详情,请编写程序计算每次调查事件的结果。

输入格式

NN
P2P_2 P3P_3 ⋯\cdots PNP_N
K1K_1 K2K_2 ⋯\cdots KNK_N
QQ
(查询 11)
(查询 22)
⋮\vdots
(查询 QQ)

每个(查询 jj)(1≤j≤Q1 \leq j \leq Q)由若干空格分隔的整数组成。首个整数为 TjT_j,后续内容如下:

  • 若 Tj=1T_j = 1,该行后续有两个整数 XjX_j, YjY_j。表示第 jj 天发生迁移事件,所有当时危险等级为 XjX_j 的城市的海狸迁移到危险等级为 YjY_j 的可达城市。
  • 若 Tj=2T_j = 2,该行后续有两个整数 AjA_j, LjL_j。表示第 jj 天发生迁入事件,城市 AjA_j 的海狸数量增加 LjL_j。
  • 若 Tj=3T_j = 3,该行后续有一个整数 BjB_j。表示第 jj 天发生调查事件,调查当前城市 BjB_j 的海狸数量。

输出格式

对于每个满足 Tj=3T_j = 3 的 jj(1≤j≤Q1 \leq j \leq Q),按顺序逐行输出当时城市 BjB_j 的海狸数量。

4
1 1 2
1 3 4 3
6
3 1
1 1 0
3 1
3 2
1 2 1
3 2
1
8
0
3
3
1 1
3 1 4
11
2 2 5
1 2 0
3 1
1 1 0
3 1
3 2
2 3 4
3 3
1 1 0
3 3
3 1
3
13
0
4
0
17
7
1 2 1 3 3 2
5 2 8 9 4 0 5
10
1 3 1
2 4 10
3 2
1 6 3
1 2 0
3 1
3 4
2 5 6
3 5
3 3
6
18
19
6
0

提示

样例解释

样例 11 解释

初始时,城市 11, 22, 33, 44 分别有 11, 33, 44, 33 只海狸。这些城市的危险等级分别为 00, 11, 11, 22。

  • 第 11 天发生调查事件。第一行输出 11,表示城市 11 的海狸数量。
  • 第 22 天发生迁移事件。城市 22 和 33 的海狸全部迁移到城市 11。第 22 天结束时,城市 11, 22, 33, 44 分别有 88, 00, 00, 33 只海狸。
  • 第 33 天发生调查事件。第二行输出 88。
  • 第 44 天发生调查事件。第三行输出 00。
  • 第 55 天发生迁移事件。城市 44 的海狸全部迁移到城市 22。第 55 天结束时,城市 11, 22, 33, 44 分别有 88, 33, 00, 00 只海狸。
  • 第 66 天发生调查事件。第四行输出 33。

该样例满足子任务 2∼72\sim 7 的限制。

样例 22 解释

初始时,城市 11, 22, 33 分别有 33, 11, 44 只海狸。这些城市的危险等级分别为 00, 11, 11。

  • 第 11 天发生迁入事件。城市 22 的海狸数量增加 55。第 11 天结束时,城市 11, 22, 33 分别有 33, 66, 44 只海狸。
  • 第 22 天发生迁移事件。无海狸迁移,因为不存在危险等级为 22 的城市。
  • 第 33 天发生调查事件。第一行输出 33。
  • 第 44 天发生迁移事件。城市 22 和 33 的海狸全部迁移到城市 11。第 44 天结束时,城市 11, 22, 33 分别有 1313, 00, 00 只海狸。
  • 第 55 天发生调查事件。第二行输出 1313。
  • 第 66 天发生调查事件。第三行输出 00。 后续事件类似发生,此处省略具体描述。

该样例满足子任务 1∼3,71\sim 3,7 的限制。

样例 33 解释

该样例满足子任务 2,3,5,72,3,5,7 的限制。

数据范围

  • 2≤N≤2 000 0002 \leq N \leq 2\,000\,000。
  • 1≤Pi<i1 \leq P_i < i(2≤i≤N2 \leq i \leq N)。
  • 0≤Ki≤1000 \leq K_i \leq 100(1≤i≤N1 \leq i \leq N)。
  • 1≤Q≤2 000 0001 \leq Q \leq 2\,000\,000。
  • TjT_j 的取值为 11, 22 或 33(1≤j≤Q1 \leq j \leq Q)。
  • 若 Tj=1T_j = 1,则 0≤Yj<Xj≤N−10 \leq Y_j < X_j \leq N − 1(1≤j≤Q1 \leq j \leq Q)。
  • 若 Tj=2T_j = 2,则 1≤Aj≤N1 \leq A_j \leq N,1≤Lj≤1001 \leq L_j \leq 100(1≤j≤Q1 \leq j \leq Q)。
  • 若 Tj=3T_j = 3,则 1≤Bj≤N1 \leq B_j \leq N(1≤j≤Q1 \leq j \leq Q)。
  • 至少存在一个 jj(1≤j≤Q1 \leq j \leq Q)满足 Tj=3T_j = 3。
  • 所有输入值为整数。

子任务

设城市最大危险等级为 DD。

  • Subtask 1 (4 pts)\text{Subtask 1 (4 pts)}:D=1D = 1。
  • Subtask 2 (8 pts)\text{Subtask 2 (8 pts)}:N≤20N \leq 20。
  • Subtask 3 (13 pts)\text{Subtask 3 (13 pts)}:D≤20D \leq 20。
  • Subtask 4 (15 pts)\text{Subtask 4 (15 pts)}:不存在 Tj=2T_j = 2 的查询,且最多有 55 个 Tj=3T_j = 3 的查询。
  • Subtask 5 (15 pts)\text{Subtask 5 (15 pts)}:最多有 55 个 Tj=3T_j = 3 的查询。
  • Subtask 6 (27 pts)\text{Subtask 6 (27 pts)}:不存在 Tj=2T_j = 2 的查询。
  • Subtask 7 (18 pts)\text{Subtask 7 (18 pts)}:无额外限制。