P11306 [COTS 2016] 搜索树 Jelka

题目背景

译自 [Izborne Pripreme 2016 (Croatian IOI/CEOI Team Selection)](https://hsin.hr/pripreme2016/) D2T1。$\texttt{1s,0.5G}$。

题目描述

给定一棵 $n$ 个点的二叉树,点有点权,其中 $1$ 号点为根节点。 $m$ 次操作修改某个点的点权。在每次修改后询问:这棵树上有多少个节点的子树(包含自身)是二叉搜索树(BST)? 我们给定 BST 的定义: - 含有一个节点的树是 BST。 - 对于大于一个节点的树,它是 BST 当且仅当: - 根节点的左子树为空,或者左子树是二叉搜索树,且左子树内所有点的点权均**不大于**根节点的点权; - 根节点的右子树为空,或者右子树是二叉搜索树,且右子树内所有点的点权均**不小于**根节点的点权。

输入格式

第一行,两个正整数 $n,m$。 接下来 $n$ 行,每行两个整数 $l_i,r_i$,表示 $i$ 号点的左儿子和右儿子编号。 - 特别地,若不存在,则为 $0$。 接下来一行,$n$ 个整数 $a_1,\cdots,a_n$,表示每个点的点权。 接下来 $m$ 行,每行两个整数 $x,v$,表示一次操作 $a_x\gets v$。

输出格式

输出 $m$ 行 $m$ 个整数,表示答案。

说明/提示

#### 样例解释 样例 $1$ 解释如图所示。 其中节点内的数字表示 BST 权值,节点外的数字表示节点编号。 ![](https://cdn.luogu.com.cn/upload/image_hosting/yabnaj75.png) #### 数据范围 对于 $100\%$ 的数据,保证: - $1\le n,m\le 2\times 10^5$; - $0\le a_i,v\le 10^9$; - 操作和树的形态均合法。 | 子任务编号 | $n,m\le $ | 特殊性质 | 得分 | | :--: | :--: | :--: | :--: | | $ 1 $ | $ 5\, 000$ | | $ 16 $ | | $ 2 $ | $ 2\times 10^5 $ | A | $ 24 $ | | $ 3 $ | $ 2\times 10^5$ | | $ 60 $ | 特殊性质 A:$\forall 1\le i\le n$,$l_i=0\lor r_i=0$。