#XYD0007. 线段树
线段树
题目描述
小 M 最近学会了如何用线段树维护序列,并支持区间求和的操作。
以下给出本题中线段树的定义。该定义可能和你熟知的线段树有区别。
- 线段树是一种有根的二叉树,其每个节点对应了序列上的一个区间 ,其中根节点对应 。
- 对于每个节点,若其代表的序列区间 满足 ,则其为叶节点;否则设 ,该节点左儿子代表区间 ,右儿子代表区间 。
定义 表示区间 的和最少可以用多少个节点的区间和的和表示,即在进行线段树区间查询时停止向下继续访问的节点个数。
现在给定 和 ,求满足 的区间 的个数。
输入格式
本题采用多组测试数据。
第一行输入两个正整数 (), ,表示当前测试点的编号和数据组数。
对于每组测试数据,输入两个正整数 , 。
输出格式
输出 行,每行一个整数,第 行的输出表示第 组测试数据的答案。
样例
Input 1
0 3
3 2
10 2
147 7
Output 1
1
19
1477
数据范围
- 对于 的数据,有 (测试点编号 )。
- 对于 的数据,有 (测试点编号 )。
- 对于 的数据,有 (测试点编号 )。
- 对于另外 的数据,有 (测试点编号 )。
- 对于 的数据,有 ,。
本题对线段树的定义部分来自 WC2024 C题 线段树。
样例解释
在样例中等于 。
这里仅给出第一组数据的样例解释。
我们有形如下图的线段树。

对于所有的区间:

由上图可见,只有区间 [0,2)[0, 2) 选取了两个区间,故答案为 1。