AT_joisp2025_k.移住計画 (Migration Plan)

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

JOI 国有 NN 个城市,这些城市编号为 11 到 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),其危险度被定义为从城市 ii 通往城市 11 的路径上经过的道路数。由于 JOI 国的结构,从城市 ii 到城市 11 的路径恰好只有 11 条。

现有 KiK_i 只海狸分别住在城市 ii(1≤i≤N1 \leq i \leq N)。JOI 国总统 Bitarou 制定了海狸们的迁移计划。迁移计划将在接下来的 QQ 天内执行。第 jj 天(1≤j≤Q1 \leq j \leq Q),会发生以下 33 种事件之一:

  • 迁移
    此时所有居住在危险度为 XjX_j 的城市的海狸,会各自通过若干道路,前往它们从当前城市能通过道路到达的危险度为 YjY_j 的城市进行迁移。这里保证 0≤Yj<Xj0 \leq Y_j < X_j。由于 JOI 国的结构,对于每只海狸来说,目标迁移城市是唯一确定的。
  • 接纳移民
    由于接纳了国外移民,居住在城市 AjA_j 的海狸数量增加 LjL_j。
  • 调查
    调查当前居住在城市 BjB_j 的海狸数量。

作为 Bitarou 的下属,你发现你可以仅通过迁移计划的信息计算每次调查事件的结果,无需实际访问那些城市。

给定 JOI 国的结构、当前海狸的分布以及迁移计划的信息,请编写程序,计算每次调查事件的结果。

输入格式

输入以以下格式从标准输入给出:

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

每一个查询(1≤j≤Q1 \leq j \leq Q)为一行若干空格分隔的整数。第一个整数为 TjT_j,其含义如下:

  • 当 Tj=1T_j = 1 时,接下来有两个整数 Xj,YjX_j, Y_j。表示第 jj 天发生的是迁移事件。那一天所有居住在危险度为 XjX_j 的城市的海狸,会迁移到危险度为 YjY_j 的城市。
  • 当 Tj=2T_j = 2 时,接下来有两个整数 Aj,LjA_j, L_j。表示第 jj 天发生的是接纳移民事件,城市 AjA_j 的海狸增加 LjL_j。
  • 当 Tj=3T_j = 3 时,接下来有一个整数 BjB_j。表示第 jj 天发生的是调查事件,需要输出当前城市 BjB_j 的海狸数量。

输出格式

对于每一个 Tj=3T_j = 3 的查询,依次输出调查城市的海狸数量,每个占一行。

输入输出样例

  • 输入#1

    4
    1 1 2
    1 3 4 3
    6
    3 1
    1 1 0
    3 1
    3 2
    1 2 1
    3 2

    输出#1

    1
    8
    0
    3
  • 输入#2

    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

    输出#2

    3
    13
    0
    4
    0
    17
  • 输入#3

    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

    输出#3

    6
    18
    19
    6
    0

说明/提示

小题目

令城市的最大危险度为 DD。

  1. (4 分)D=1D = 1。
  2. (8 分)N≤20N \leq 20。
  3. (13 分)D≤20D \leq 20。
  4. (15 分)Tj≠2T_j \neq 2(1≤j≤Q1 \leq j \leq Q),且 Tj=3T_j = 3 的 jj 的个数不超过 55。
  5. (15 分)Tj=3T_j = 3 的 jj 的个数不超过 55。
  6. (27 分)Tj≠2T_j \neq 2(1≤j≤Q1 \leq j \leq Q)。
  7. (18 分)无额外限制。

样例解释 1

最开始,城市 1,2,3,41,2,3,4 分别有 1,3,4,31,3,4,3 只海狸。各城市的危险度分别为 0,1,1,20,1,1,2。

  • 第 11 天发生调查事件。需输出城市 11 的海狸数量,即 11。
  • 第 22 天发生迁移事件。所有居住在危险度 11 的城市(即城市 2,32,3)的海狸全部转移到危险度 00 的城市(城市 11)。此时城市 1,2,3,41,2,3,4 的海狸数量变为 8,0,0,38,0,0,3。
  • 第 33 天发生调查事件。需输出城市 11 的海狸数量,即 88。
  • 第 44 天发生调查事件。需输出城市 22 的海狸数量,即 00。
  • 第 55 天发生迁移事件。所有危险度为 22 的城市(即城市 44)的海狸迁移到危险度为 11 的城市(城市 22)。此时城市 1,2,3,41,2,3,4 的海狸数量为 8,3,0,08,3,0,0。
  • 第 66 天发生调查事件。需输出城市 22 的海狸数量,即 33。

此输入数据满足小题目 2,3,4,5,6,72,3,4,5,6,7 的限制。


样例解释 2

最开始,城市 1,2,31,2,3 分别有 3,1,43,1,4 只海狸。各城市的危险度分别为 0,1,10,1,1。

  • 第 11 天发生接纳移民事件。城市 22 的海狸增加 55。此时城市 1,2,31,2,3 的海狸数量为 3,6,43,6,4。
  • 第 22 天发生迁移事件。危险度为 22 的城市没有海狸,因此无人迁移。
  • 第 33 天发生调查事件。需输出城市 11 的海狸数量,即 33。
  • 第 44 天发生迁移事件。所有危险度为 11 的城市(城市 2,32,3)的海狸迁移到危险度为 00 的城市(城市 11)。此时城市 1,2,31,2,3 的海狸数量为 13,0,013,0,0。
  • 第 55 天发生调查事件。需输出城市 11 的海狸数量,即 1313。
  • 第 66 天发生调查事件。需输出城市 22 的海狸数量,即 00。
  • 后面事件同理,省略。

此输入数据满足小题目 1,2,3,71,2,3,7 的限制。


样例解释 3

此输入数据满足小题目 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 取 1,2,31,2,3 中的一个(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)。
  • Tj=3T_j = 3 的 jj 至少有一个。
  • 输入的所有值均为整数。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页