题号:NC311984
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
小L的科研毫无进展,于是他种了一棵线段树。

在接下来

天里,每天会发生以下两类事件之一:(除叶子节点外的)树上某节点的信息被毁坏,或查询某个区间在该线段树上的代价。
线段树的定义:将线段树视为一棵
二叉树,每个节点对应一个闭区间
![[l, r]](https://www.nowcoder.com/equation?tex=%5Bl%2C%20r%5D)
:

若

,则该节点为叶节点。

若

,令
%20%2F%202%20%5Crfloor)
。该节点的左子节点对应区间
![[l, mid]](https://www.nowcoder.com/equation?tex=%5Bl%2C%20mid%5D)
,右子节点对应区间
![[mid + 1, r]](https://www.nowcoder.com/equation?tex=%5Bmid%20%2B%201%2C%20r%5D)
。

根节点对应区间
![[1, n]](https://www.nowcoder.com/equation?tex=%5B1%2C%20n%5D)
。
受损与信息获取:若某节点被毁坏,其信息可通过访问其左右两个子节点得到(即查询时遇到该节点则必须递归到子节点,该节点本身不提供信息)。
查询代价:给定区间
![[x, y]](https://www.nowcoder.com/equation?tex=%5Bx%2C%20y%5D)
,从根节点开始进行区间查询,过程如下:

若
![[l,r]](https://www.nowcoder.com/equation?tex=%5Bl%2Cr%5D)
被
![[x,y]](https://www.nowcoder.com/equation?tex=%5Bx%2Cy%5D)
完全包含:

若该节点未被毁坏:计

次「有效访问」,并停止递归(该分支结束);

若该节点已被毁坏:不计数,直接对与
![[x,y]](https://www.nowcoder.com/equation?tex=%5Bx%2Cy%5D)
有交的子节点按上述规则递归访问。

若
![[l,r]](https://www.nowcoder.com/equation?tex=%5Bl%2Cr%5D)
未被
![[x,y]](https://www.nowcoder.com/equation?tex=%5Bx%2Cy%5D)
完全包含:

若该节点未被毁坏:计
次「有效访问」;然后若左子节点对应区间与
![[x, y]](https://www.nowcoder.com/equation?tex=%5Bx%2C%20y%5D)
有交则访问左子节点,若右子节点对应区间与
![[x, y]](https://www.nowcoder.com/equation?tex=%5Bx%2C%20y%5D)
有交则访问右子节点;

若该节点已被毁坏:不计数,直接对与
![[x, y]](https://www.nowcoder.com/equation?tex=%5Bx%2C%20y%5D)
有交的子节点按上述规则递归访问。

定义
)
为完成对
![[x, y]](https://www.nowcoder.com/equation?tex=%5Bx%2C%20y%5D)
的查询时,被计数的「有效访问」节点个数(即访问到的、未被毁坏的节点个数)。

对于每个查询事件,你需要回答:在当前已发生的毁坏状态下,查询给定区间
![[l, r]](https://www.nowcoder.com/equation?tex=%5Bl%2C%20r%5D)
的
)
。
【名词解释】
二叉树:满足以下全部条件的树。

二叉树可以是空集;若不为空,则由一个根节点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成;

每个节点要么没有父节点连接(此时该节点被称为
根节点)、要么被

个父节点连接(此时该节点被称为父节点的
子节点);

每个节点连接的子节点数量要么为

(此时该节点被称为
叶子节点),要么不超过

,且此时每个子节点都有明确的“左”或“右”属性。
输入描述:
第一行输入一个正整数
,同时用于表示事件总数和线段树的根节点对应的区间长度。
此后
行,第
行先输入一个整数
,表示第
天发生的事件类型,随后在同一行:
若
,输入两个整数
,表示毁坏了
区间所代表的节点,保证仅对应线段树上的一个节点,同一个节点可能被毁坏多次;
若
,输入两个整数
,表示想要获取
区间的信息。
输出描述:
对于每一个
的事件,新起一行输出一个整数,表示
的值。
示例1
输入
复制
4
2 1 4
1 1 4
2 1 4
2 1 2