CF1942H.Farmer John's Favorite Intern

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

Peaches...

⠀

Ruby 刚刚通过编程竞赛赢得了 Farmer John 农场的实习机会!作为新招募的实习生,Ruby 的任务是维护 Farmer John 的桃树,这棵树有 nn 个结点,以结点 11 为根。每个结点初始时有 ai=0a_i = 0 个桃子,并且有两种事件可能发生:

  1. 在某个结点 xx 处的生长事件:Ruby 必须选择 xx 的父结点或 xx 的子树中的任意一个结点,并将其桃子数量增加 11。
  2. 在某个结点 xx 处的收获事件:Ruby 必须选择 xx 的子树中的一个结点,并将其桃子数量减少 11。注意,这与生长事件可选的结点集合不同。

注意,xx 的子树包括结点 xx 本身。Ruby 还得到了一个长度为 nn 的数组 bb。当且仅当对每个结点 ii 都有 ai≥bia_i \ge b_i 时,这棵桃树才被认为是健康的。

Ruby 需要执行 qq 个操作,操作有两种类型:

  • 1 x v — 在结点 xx 上执行 vv 次生长事件。Ruby 每次可以选择不同的结点进行增加。
  • 2 x v — 在结点 xx 上执行 vv 次收获事件。Ruby 每次可以选择不同的结点进行减少。

对于每个操作前缀,Ruby 想知道是否存在一种顺序执行这些操作的方法,使得最终的桃树是健康的。注意,Ruby 不能执行会导致某个 aia_i 变为负数的收获事件。

每个前缀互相独立,也就是说,对于某个操作,Ruby 可以在包含该操作的每个前缀中选择不同的结点来执行事件。

输入格式

第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)——表示测试用例的数量。

每个测试用例的第一行包含两个整数 nn 和 qq(1≤n,q≤2×1051 \le n, q \le 2 \times 10^5)——表示树的结点数和操作数。

第二行包含 n−1n-1 个整数 p2,p3,…,pnp_2, p_3, \ldots, p_n(1≤pi<i1 \le p_i < i)——表示每个结点的父结点编号。

第三行包含 nn 个整数 b1,b2,…,bnb_1, b_2, \ldots, b_n(0≤bi≤1060 \le b_i \le 10^6)——表示每个结点所需的最少桃子数。

接下来的 qq 行,每行描述一个操作,包含三个整数 t,x,vt, x, v(1≤t≤21 \le t \le 2,1≤x≤n1 \le x \le n,1≤v≤1061 \le v \le 10^6)。如果 t=1t=1,表示在结点 xx 上执行 vv 次生长事件;如果 t=2t=2,表示在结点 xx 上执行 vv 次收获事件。

保证所有测试用例中 nn 的总和不超过 2×1052 \times 10^5,qq 的总和不超过 2×1052 \times 10^5。

输出格式

对于每个测试用例,输出 qq 行。第 ii 行输出 "YES"(不区分大小写),如果 Ruby 能够在某种顺序下完成前 ii 个操作后使桃树健康,否则输出 "NO"。

你可以用任意大小写输出答案,例如 "yEs"、"yes"、"Yes" 和 "YES" 都会被认为是肯定的回答。

输入输出样例

  • 输入#1

    2
    8 8
    1 1 1 4 3 6 6
    5 6 2 9 8 4 1 3
    1 3 14
    1 4 17
    1 2 7
    2 2 1
    1 6 1
    2 1 1000000
    1 4 999999
    1 3 1
    10 20
    1 1 1 2 5 2 4 7 2
    311353 270334 74853 385085 315501 183346 234819 417314 103862 429437
    1 1 837541
    1 10 933876
    1 1 565958
    1 4 791455
    2 3 85054
    2 3 440978
    1 4 981040
    1 5 68522
    2 1 858305
    2 4 184308
    1 4 905081
    2 8 519626
    2 2 269090
    1 1 43016
    2 2 517644
    1 5 355792
    1 9 319241
    2 10 125447
    2 10 523890
    1 10 241045

    输出#1

    NO
    NO
    YES
    NO
    YES
    NO
    NO
    YES
    NO
    NO
    NO
    YES
    YES
    NO
    NO
    YES
    YES
    NO
    YES
    YES
    NO
    YES
    NO
    NO
    YES
    YES
    NO
    NO

说明/提示

对于第一个测试用例中包含操作 1,2,…,51, 2, \ldots, 5 的前缀,Ruby 可以按如下顺序执行操作:

  1. Ruby 执行操作 22,选择将 a4a_4 增加 99,a5a_5 增加 88。
  2. Ruby 执行操作 11,选择将 a1a_1 增加 55,a3a_3 增加 22,a6a_6 增加 44,a8a_8 增加 33。
  3. Ruby 执行操作 33,选择将 a2a_2 增加 77。
  4. Ruby 执行操作 44,选择将 a2a_2 减少 11。
  5. Ruby 执行操作 55,选择将 a7a_7 增加 11。

由 ChatGPT 4.1 翻译

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

首页