AT_abc351_g.[ABC351G] Hash on Tree

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

有一棵有 NN 个顶点的有根树,顶点编号为 11 到 NN。
顶点 11 是根,顶点 ii(2≤i≤N2 \leq i \leq N)的父节点是顶点 pip_i,且 pi<ip_i < i。
另外,给定一个数列 A=(A1,A2,…,AN)A = (A_1, A_2, \dots, A_N)。

有根树的哈希值定义如下:

  • 对于 f(n)f(n)(1≤n≤N1 \leq n \leq N),按照 n=N,N−1,…,2,1n = N, N-1, \dots, 2, 1 的顺序进行如下计算:
    • 如果顶点 nn 是叶子节点,则 f(n)=Anf(n) = A_n。
    • 如果顶点 nn 不是叶子节点,设 C(n)C(n) 为 nn 的所有子节点的集合,则 f(n)=An+∏c∈C(n)f(c)f(n) = A_n + \prod_{c \in C(n)} f(c)。
  • 有根树的哈希值为 f(1) mod 998244353f(1) \bmod{998244353}。

给定 QQ 个查询,请按顺序处理每个查询。
每个查询给定 v,xv, x,将 AvA_v 的值更新为 xx,然后输出当前有根树的哈希值。

输入格式

输入按以下格式从标准输入给出,其中 queryi\mathrm{query}_i 表示第 ii 个查询。

NN QQ
p2p_2 p3p_3 …\dots pNp_N
A1A_1 A2A_2 …\dots ANA_N
query1\mathrm{query}_1
query2\mathrm{query}_2
⋮\vdots
queryQ\mathrm{query}_Q

每个查询的格式如下:

vv xx

输出格式

输出 QQ 行,第 ii 行输出第 ii 个查询的答案。

输入输出样例

  • 输入#1

    3 2
    1 1
    3 5 1
    3 4
    2 1

    输出#1

    23
    7
  • 输入#2

    5 4
    1 1 2 2
    2 5 4 4 1
    3 3
    5 0
    4 5
    5 2

    输出#2

    29
    17
    17
    47
  • 输入#3

    10 10
    1 2 1 2 5 6 3 5 1
    766294629 440423913 59187619 725560240 585990756 965580535 623321125 550925213 122410708 549392044
    1 21524934
    9 529970099
    6 757265587
    8 219853537
    5 687675301
    5 844033519
    8 780395611
    2 285523485
    6 13801766
    3 487663184

    输出#3

    876873846
    952166813
    626349486
    341294449
    466546009
    331098453
    469507939
    414882732
    86695436
    199797684

说明/提示

限制条件

  • 2≤N≤2×1052 \leq N \leq 2 \times 10^5
  • 1≤Q≤2×1051 \leq Q \leq 2 \times 10^5
  • 1≤pi<i1 \leq p_i < i
  • 0≤Ai<9982443530 \leq A_i < 998244353
  • 1≤v≤N1 \leq v \leq N
  • 0≤x<9982443530 \leq x < 998244353
  • 输入的所有值均为整数

样例解释 1

初始时,A=(3,5,1)A = (3, 5, 1)。第 1 个查询按如下方式处理:

  • 将 A3A_3 更新为 44,此时 A=(3,5,4)A = (3, 5, 4)。
  • 有根树的哈希值按如下步骤计算为 2323,输出 2323。
    • 顶点 33 没有子节点,所以 f(3)=4f(3) = 4。
    • 顶点 22 没有子节点,所以 f(2)=5f(2) = 5。
    • 顶点 11 有子节点 2,32, 3,所以 f(1)=3+5×4=23f(1) = 3 + 5 \times 4 = 23。
    • f(1) mod 998244353=23f(1) \bmod{998244353} = 23,作为有根树的哈希值。

第 2 个查询按如下方式处理:

  • 将 A2A_2 更新为 11,此时 A=(3,1,4)A = (3, 1, 4)。
  • 有根树的哈希值按如下步骤计算为 77,输出 77。
    • 顶点 33 没有子节点,所以 f(3)=4f(3) = 4。
    • 顶点 22 没有子节点,所以 f(2)=1f(2) = 1。
    • 顶点 11 有子节点 2,32, 3,所以 f(1)=3+1×4=7f(1) = 3 + 1 \times 4 = 7。
    • f(1) mod 998244353=7f(1) \bmod{998244353} = 7,作为有根树的哈希值。

由 ChatGPT 4.1 翻译

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

首页