#P15425. [ICPC 2026 APC] Christmas Tree Un-decoration

    ID: 14640 传统题 3000ms 2048MiB 尝试: 1 已通过: 1 难度: 7 上传者: 标签>CF2200树形DP树链剖分线段树动态DP

[ICPC 2026 APC] Christmas Tree Un-decoration

题目描述

去年圣诞节,你有一棵漂亮的圣诞树,这棵树有 nn 个结点,编号为 11nn,以结点 11 作为根。对于每个 ii2in2 \le i \le n),结点 pip_i 是结点 ii 的父亲。树上的每个结点 ii 上装饰有 aia_i 个装饰品(1in1 \le i \le n)。

然而圣诞节已过了几个月,是时候摘下所有的装饰品,把树收起来等到明年再用了。由于这个过程很单调,你决定通过只使用如下操作让它变得有趣些——你可以进行零次甚至多次如下操作:

选择一个结点 uu,对于从结点 11 到结点 uu 的唯一简单路径上的每个结点 vv(包括 uu),如果 vv 上还有装饰品,就从 vv 上移除一个装饰品。

当你即将决定最少需要多少次操作时,你的小孩却改变了树上某些节点的装饰品数量。更具体地说,你的小孩会进行 qq 次更改。在第 jj 次更改中,结点 uju_j 上的装饰品数量被修改为 xjx_j1jq1 \le j \le q)。请注意这些更改具有持久性:每次更改的效果会持续到之后。

注意:你实际上并不会真的对树执行操作。

对于初始配置以及每次更改后的配置,你需要分别计算出当下移除所有装饰品所需的最少操作次数。

输入格式

第一行为一个整数 tt1t100001 \le t \le 10\,000),表示测试用例数量。接下来是 tt 组测试用例。每组数据格式如下:

每个测试用例的第一行包含两个整数 nnqq2n2000002 \le n \le 200\,0001q2000001 \le q \le 200\,000)。第二行为 n1n-1 个整数 p2,p3,,pnp_2, p_3, \ldots, p_n (对所有 2in2 \le i \le n,有 1pi<i1 \le p_i < i)。第三行为 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n(对所有 1in1 \le i \le n1ai1091 \le a_i \le 10^9)。

接下来的 qq 行,每一行包含两个整数 uju_jxjx_j1ujn1 \le u_j \le n1xj1091 \le x_j \le 10^9),表示第 jj 次修改的信息。

所有测试用例中 nn 的总和不超过 200000200\,000

所有测试用例中 qq 的总和不超过 200000200\,000

输出格式

对于每个测试用例,输出 q+1q+1 行。第一行输出初始树所需的最小操作次数。接下来的第 jj 行输出第 jj 次修改后最少需要的操作次数。

输入输出样例 #1

输入 #1

2
6 3
1 1 2 3 3
5 3 2 5 2 4
4 1
3 10
1 6
8 6
1 2 3 4 5 5 3
1 1 1 1 1 1 1 1
6 3
8 3
5 5
6 1
3 7
5 1

输出 #1

11
9
13
13
3
5
7
8
8
8
7

说明/提示

样例输入输出 #1 说明:

对于第一个测试用例,其初始树如图 D.1 所示。注意,图中的星星(结点 11)也是一个装饰品。

  • 对于初始树,你可以通过选择结点 44 5 次、结点 55 2 次、结点 66 4 次,总共 1111 次操作移除所有装饰品。
  • 第一次修改后,结点 44 上只有一个装饰品。你需要 99 次操作,依次选择结点 44 1 次、结点 22 2 次、结点 55 2 次、结点 66 4 次。
  • 第二次修改后,结点 33 上有 1010 个装饰品。你需要 1313 次操作。
  • 第三次修改后,结点 11 上有 66 个装饰品,但所需操作次数并未改变。

由 ChatGPT 5 翻译