题号:NC305997
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
广义线段树是说,相比于普通的线段树,其中的结点的左右儿子所对应的区间的是任意的,不一定各占该结点区间的一半。
举例来说,一棵以区间
![[1,5]](https://www.nowcoder.com/equation?tex=%5B1%2C5%5D)
为根的广义线段树,其结构可能如下:根的左儿子是
![[1,1]](https://www.nowcoder.com/equation?tex=%5B1%2C1%5D)
,是一个叶子结点,而右儿子则是
![[2,5]](https://www.nowcoder.com/equation?tex=%5B2%2C5%5D)
;结点
![[2,5]](https://www.nowcoder.com/equation?tex=%5B2%2C5%5D)
则拥有两个儿子
![[2,3]](https://www.nowcoder.com/equation?tex=%5B2%2C3%5D)
与
![[4,5]](https://www.nowcoder.com/equation?tex=%5B4%2C5%5D)
,而这两个儿子又各自有两个叶子结点作为它们的左右儿子。
现有一棵在区间
![[1,n]](https://www.nowcoder.com/equation?tex=%5B1%2Cn%5D)
上随机生成的广义线段树,其生成方式如下:
从区间
![[1,n]](https://www.nowcoder.com/equation?tex=%5B1%2Cn%5D)
开始:
-
假设当前线段树结点对应的区间是
则:
-
若
,那么在
中均匀随机地选一个数
,则该结点的左儿子所对应的区间是
,右儿子是
,接着,递归地为其左儿子与右儿子建立子树;
-
若
,那么该结点是整棵广义线段树的叶子结点,直接结束。
另外,与普通的线段树类似,我们定义在广义线段树上查询某一个区间
![[ql,qr]](https://www.nowcoder.com/equation?tex=%5Bql%2Cqr%5D)
的过程:
从根结点
![[1,n]](https://www.nowcoder.com/equation?tex=%5B1%2Cn%5D)
开始:
-
假设当前线段树结点对应的区间是
,则:
-
若
被
包含,则返回,无需访问其子结点;
-
否则,若该结点的左儿子与
有交,则递归地访问其左儿子;同样的,若该结点的右儿子与
有交,则也会递归地访问其右儿子。
举例来说,不管该广义线段树的结构如何,在其上查询
![[1,n]](https://www.nowcoder.com/equation?tex=%5B1%2Cn%5D)
,则一定只会访问根结点,访问的结点数量为

;如果在其上查询
![[2,2]](https://www.nowcoder.com/equation?tex=%5B2%2C2%5D)
,则一定会从根结点一路访问到
![[2,2]](https://www.nowcoder.com/equation?tex=%5B2%2C2%5D)
对应的叶子结点,那么访问的结点数量就为
![[2,2]](https://www.nowcoder.com/equation?tex=%5B2%2C2%5D)
所对应的叶子结点到根结点这条路径上的点数(对于前述题面里给出的那棵以
![[1,5]](https://www.nowcoder.com/equation?tex=%5B1%2C5%5D)
为根的广义线段树,查询
![[2,2]](https://www.nowcoder.com/equation?tex=%5B2%2C2%5D)
访问的结点数量就是

,即
![[1,5],[2,5],[2,3],[2,2]](https://www.nowcoder.com/equation?tex=%5B1%2C5%5D%2C%5B2%2C5%5D%2C%5B2%2C3%5D%2C%5B2%2C2%5D)
)。
现在有

个询问,每个询问给出一个查询区间
![[ql,qr]](https://www.nowcoder.com/equation?tex=%5Bql%2Cqr%5D)
。我们希望知道,如果在这棵随机生成的广义线段树上查询
![[ql,qr]](https://www.nowcoder.com/equation?tex=%5Bql%2Cqr%5D)
,那么期望会访问多少个广义线段树结点。
输入描述:
第一行一个整数
,表示线段树对应区间的长度。
接下来一行一个整数
,表示将要询问的区间数。
接下来
行,每行两个整数
,表示每次询问的区间。
输出描述:
输出

行,第

行一个整数

,表示第

个询问对应的期望访问次数,答案对

取模。
示例1
输出
复制
549034400
815232896
525662804
1
备注:
。