CFCF2206D.Christmas Tree Un-decoration

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述


图 D.1:圣诞树。
去年圣诞节,你有一棵漂亮的圣诞树,这棵树有 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

    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 翻译

首页