QOJ.ac

QOJ

时间限制: 8.0 s 内存限制: 1024 MB 总分: 100 可 Hack ✓

#6826. 魔法森林

统计

魔法森林(Forest of Magic),顾名思义,是一片充满魔法的森林。雾雨魔理沙(Kirisame Marisa)是一位年轻但技艺高超的魔法使,她就居住在这片森林中。

森林中有许多地点,它们通过双向道路连接,使得任意两个地点之间都可以直接或间接地通过道路到达,且从一个地点到另一个地点只有唯一的一条简单路径。换句话说,森林中的地点和道路构成了一棵树。

最初,森林中有 $n$ 个地点,编号从 $1$ 到 $n$。魔理沙的家位于 $1$ 号地点,因此从魔理沙的角度来看,森林可以被视为一棵以 $1$ 为根的树。

由于所有丢失的东西最终都会流向幻想乡,森林中会不时出现新的地点。新地点会与一个现有的地点通过一条双向道路连接,因此在出现新地点后,森林依然保持为一棵树。

森林里还有许多淘气的妖精。有时,一只妖精会从一个特定的地点前往另一个地点。由于妖精是自然的化身,在妖精经过的每一个地点上,都会长出 $k$ 朵特定颜色的花。颜色可以用 $1$ 到 $10^9$ 之间的数字表示。

魔理沙很喜欢花,有时她想邀请朋友们一起赏花。在此之前,她会统计特定地点的子树中,颜色编号不大于 $c$ 的花的数量总和。如果 $u$ 位于 $v$ 到 $1$ 的简单路径上,我们就称地点 $v$ 在 $u$ 的子树中。注意,魔理沙不会采摘这些花,因此统计操作不会改变任何东西。

然而,森林太大了,所以她每次都要求你进行统计。此外,你必须在她每次询问时立即给出回答。

输入格式

输入的第一行包含两个整数 $n$ 和 $q$ ($1 \le n \le 3 \times 10^4$, $0 \le q \le 10^5$),表示森林中最初有 $n$ 个地点,魔理沙将进行 $q$ 次操作。

接下来的 $n - 1$ 行,每行包含两个正整数 $u_i$ 和 $v_i$ ($1 \le u_i, v_i \le n, u_i \neq v_i$),由空格分隔,表示在 $u_i$ 号地点和 $v_i$ 号地点之间有一条直接连接的双向道路。

接下来的 $q$ 行,每行按顺序表示一个操作,格式为以下三种之一:

  • $1 \ u_i$:出现了一个新地点,编号为 $n' + 1$,其中 $n'$ 表示该操作前地点的总数。此外,新地点与 $u_i$ 号地点 ($1 \le u_i \le n'$) 之间有一条道路。
  • $2 \ u_i \ v_i \ c_i \ k_i$:一只妖精从 $u_i$ 号地点前往 $v_i$ 号地点,在它们之间唯一简单路径上的每个地点(包括两个端点)上,都会长出 $k_i$ ($1 \le k_i \le 10^7$) 朵颜色为 $c_i$ ($1 \le c_i \le 10^9$) 的花。保证 $u_i$ 号地点和 $v_i$ 号地点均已存在。
  • $3 \ u_i \ c_i$:魔理沙想知道 $u_i$ 号地点的子树中,颜色编号不大于 $c_i$ ($1 \le c_i \le 10^9$) 的花有多少朵。子树的定义已在题目描述中给出。

此外,为了确保你能立即回答魔理沙的询问,你需要维护一个变量 last,它等于上一次询问的答案对 $2^{31}$ 取模的结果(初始为 $0$)。每次读取一行操作时,除第一个数字外,所有数字都应与 last 进行按位异或(bitwise XOR)运算,运算结果即为该数字的实际值。

非负整数 $A$ 和 $B$ 的按位异或 $A \oplus B$ 定义如下: * 当 $A \oplus B$ 写成二进制时,若 $A$ 和 $B$ 在 $2^k$ 位 ($k \ge 0$) 上的数字恰好有一个为 $1$,则结果在该位上为 $1$,否则为 $0$。

保证: 输入中的每个数字都是小于 $2^{31}$ 的非负整数。 使用上述方法还原后,数字的实际值满足上述限制。 地点总数不超过 $5 \times 10^4$。 第二类操作的总次数不超过 $5 \times 10^4$。

输出格式

对于每个第三类操作,输出一行一个非负整数,表示 $u_i$ 号地点的子树中颜色不大于 $c_i$ 的花的数量。

样例

输入 1

3 5
1 2
1 3
2 2 3 1 4
3 1 1
1 13
2 13 8 14 13
3 13 14

输出 1

12
14

说明

输入中数字的实际值应为:

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

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.