QOJ.ac

QOJ

時間限制: 2 s 記憶體限制: 1024 MB 總分: 100

#2547. 物品与英雄

统计

有一个包含 $N$ 个顶点的有根树。顶点编号为 $1$ 到 $N$,其中顶点 $1$ 为根。顶点 $i$ ($2 \le i \le N$) 的父节点记为 $P_i$。

每个顶点都有一个装有物品的盒子。此外,每个顶点都有一位英雄。 初始时,顶点 $i$ 的盒子中包含 $A_i$ 个物品。 在每个顶点 $i$,该顶点的英雄有一个收集 $C_i$ 个物品的任务。顶点 $i$ 的英雄可以选择以顶点 $i$ 为根的子树中的某些顶点,并从每个选定的顶点中取出任意数量的物品。同一个物品不能被多于一位英雄取出。

请确定英雄们是否能够采取某种行动,使得所有 $N$ 个任务都能完成。 此外,给定 $Q$ 次查询。在第 $j$ 次查询中,给定整数 $t_j, v_j, x_j$,数值按以下方式更改: 如果 $t_j = 1$,将 $A_{v_j}$ 的值更改为 $x_j$。 如果 $t_j = 2$,将 $C_{v_j}$ 的值更改为 $x_j$。

查询按顺序执行。每次查询所做的更改对后续所有查询均有效。在每次查询后,请确定是否能够完成所有 $N$ 个任务。

输入格式

第一行包含一个整数 $N$ ($1 \le N \le 10^5$)。 第二行包含 $N-1$ 个整数 $P_2, P_3, \dots, P_N$:顶点 $2, 3, \dots, N$ 的父节点 ($1 \le P_i < i$)。 第三行包含 $N$ 个整数 $A_1, A_2, \dots, A_N$ ($1 \le A_i \le 10^9$)。 第四行包含 $N$ 个整数 $C_1, C_2, \dots, C_N$ ($1 \le C_i \le 10^9$)。 第五行包含一个整数 $Q$ ($1 \le Q \le 10^5$)。 接下来的 $Q$ 行,每行包含一个由三个整数 $t_j, v_j, x_j$ ($1 \le t_j \le 2, 1 \le v_j \le N, 1 \le x_j \le 10^9$) 描述的查询:查询类型、顶点编号以及 $A_{v_j}$(对于第一类查询)或 $C_{v_j}$(对于第二类查询)的新值。

输出格式

第一行输出“Yes”(如果可以同时完成所有 $N$ 个任务),否则输出“No”。 在接下来的 $Q$ 行中,以相同的格式输出每次查询后的答案,每行一个。

样例

样例输入 1

3
1 1
2 1 3
3 1 2
2
1 1 1
2 3 1

样例输出 1

Yes
No
Yes

样例输入 2

5
1 2 1 3
1000000000 1000000000 1000000000 1000000000 1000000000
1 1 1 1 1
1
1 1 1

样例输出 2

Yes
Yes

样例输入 3

5
1 2 2 2
109102235 645590056 708566822 497603443 131863700
50073184 441114664 164994352 304489019 158100373
8
1 5 692234112
1 3 610338520
2 4 818442884
2 4 164762830
2 4 923652447
2 4 197720766
1 1 779302743
1 1 222486377

样例输出 3

No
Yes
Yes
No
Yes
No
Yes
Yes
Yes

说明

在样例 1 中,顶点 1 的英雄从顶点 1 的盒子中取出两个物品,从顶点 3 的盒子中取出一个物品;顶点 2 的英雄从顶点 2 的盒子中取出一个物品;顶点 3 的英雄从顶点 3 的盒子中取出两个物品。因此,所有三个任务都完成了。

第一次查询将顶点 1 盒子中的物品数量从两个改为一个。在这种情况下,没有足够的物品来完成所有三个任务。

第二次查询将顶点 3 英雄的任务所需物品数量从两个改为一个。在这种情况下,顶点 1 的英雄从顶点 1 的盒子中取出一个物品,从顶点 3 的盒子中取出两个物品;顶点 2 的英雄从顶点 2 的盒子中取出一个物品;顶点 3 的英雄从顶点 3 的盒子中取出一个物品,所有三个任务再次完成。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.