QOJ.ac

QOJ

Limite de temps : 1.0 s Limite de mémoire : 512 MB Points totaux : 100

#17615. 圣诞树

Statistiques

二叉树是一种层次结构,由编号为 $1$ 到 $n$ 的 $n$ 个节点组成。树中的每个节点 $k$ 可以有一个左儿子 $l_k$ 和一个右儿子 $r_k$。如果节点 $m$ 是节点 $k$ 的儿子,则称 $k$ 是 $m$ 的父亲。编号为 $1$ 的节点称为二叉树的根,根节点没有父亲,而其他每个节点都有唯一的父亲。节点 $k$ 的子孙是指所有通过沿着父亲指针向上能够到达 $k$ 的节点。显然,除了根节点自身以外,所有节点都是根节点的子孙。子树是由某个节点 $k$ 及其所有子孙组成的二叉树。每个节点上都写有一个值——一个介于 $0$ 到 $10^9$ 之间的整数(含端点)。

如果对于树中的每个节点 $k$,都满足以下条件,则称该二叉树为二叉搜索树

  • 如果 $k$ 有左儿子 $l_k$,则 $l_k$ 及其所有子孙的值都小于或等于节点 $k$ 的值。
  • 如果 $k$ 有右儿子 $r_k$,则 $r_k$ 及其所有子孙的值都大于或等于节点 $k$ 的值。

请注意,二叉搜索树的任何子树也必须是二叉搜索树。

给定一棵二叉树以及 $m$ 个操作,需要按照给定的顺序依次处理。每个操作的格式为 "$k_i\ x_i$",表示需要将节点 $k_i$ 的值修改为 $x_i$。对于每个操作,需要求出在执行该操作后,树中共有多少个子树是二叉搜索树。

输入格式

第一行包含两个正整数 $n$ 和 $m$ — 树的节点数和操作数。

接下来的 $n$ 行中,第 $k$ 行包含两个整数 $l_k$ 和 $r_k$ ($0 \le l_k, r_k \le n$) — 分别表示节点 $k$ 的左儿子和右儿子的编号。如果节点没有左儿子或右儿子,则对应的 $l_k$ 或 $r_k$ 为 $0$。

下一行包含 $n$ 个整数 $v_1, v_2, \dots, v_n$ ($0 \le v_k \le 10^9$) — 节点 $1$ 到 $n$ 的初始值。

接下来的 $m$ 行中,第 $i$ 行包含两个整数 $k_i$ 和 $x_i$ ($1 \le k_i \le n$, $0 \le x_i \le 10^9$) — 表示要修改的节点编号以及写入该节点的新值。

输出格式

输出 $m$ 行。在第 $i$ 行中,输出在处理完输入的第 $i$ 个操作后,当前树中是二叉搜索树的子树数量。

子任务

子任务 分值 数据范围
1 20 $1 \le n, m \le 5000$
2 40 $1 \le n, m \le 200\,000$,且对于每个 $k$,数值 $l_k$ 和 $r_k$ 中至少有一个为 $0$
3 40 $1 \le n, m \le 200\,000$

样例

输入样例 1

6 5
2 3
4 0
5 6
0 0
0 0
0 0
4 1 3 2 2 5
3 3
2 2
3 5
5 4
6 1

输出样例 1

4
5
5
6
4

输入样例 2

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

输出样例 2

3
3
3
6
6
6
6
8
7
8

说明

第一个样例的解释:

初始状态以及处理前三个操作后的树的形态如下图所示。下划线标出了在操作中被修改的值,而被着色的节点是所有作为二叉搜索树的子树的根节点。

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.