P r o b l e m \mathrm{Problem} Problem
小周猪猪是一只热爱数据结构的小猪猪,它热爱可爱的线段树。
线段树,就是它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。这样,我们就得到一个树形结构。具体的,我们可以用图来表示这个线段树:
具体的说,我们对于任意区间
[
l
,
r
]
[l,r]
[l,r],则我们可以将区间分治为
[
l
,
⌊
l
+
r
2
⌋
]
[l,\lfloor \frac{l+r}{2}\rfloor]
[l,⌊2l+r⌋]和
[
⌊
l
+
r
2
⌋
+
1
,
r
]
[\lfloor \frac{l+r}{2}\rfloor+1,r]
[⌊2l+r⌋+1,r].特别地,当
l
=
r
l=r
l=r时,当前节点为线段树的叶节点。
小周猪猪相信你已经能够熟练的掌握线段树。现在小周猪猪决定考考聪明的你:
小周猪猪规定,包含 x x x的节点表示为:节点中的线段 [ l , r ] [l,r] [l,r]满足 l ≤ x ≤ r l\le x\le r l≤x≤r.包含 x x x的路径为:包含 x x x的节点构成的一条路径。
例如,包含 7 7 7的路径可以表示为途中标红的路径。
现在,小周猪猪有 q q q个询问:
- 对于每一个询问给定四个值 x 1 , x 2 , l , r x_1,x_2,l,r x1,x2,l,r,区间 [ l , r ] [l,r] [l,r]是根节点的线段, x 1 x_1 x1和 x 2 x_2 x2都可以在包含它的路径上随意选择个点最为最终的位置。小周猪猪想要知道, x 1 x_1 x1和 x 2 x_2 x2在树上找到相应位置后,它们的最大距离是多少。
输入格式
第一行,一个数 q q q。
接下来 q q q行,每行四个数: x 1 , x 2 , l , r x_1,x_2,l,r x1,x2,l,r, x 1 x_1 x1和 x 2 x_2 x2。
输出格式
共 q q q行:第 i i i行表示第 i i i个询问的答案,即最大的树上距离。
输入样例
2
6 7 1 10
1 10 1 10
输出样例
4
7
数据规模与约定
对于测试点 1 1 1~ 2 2 2,保证: l + 1 = r l+1=r l+1=r.
对于测试点 3 3 3~ 4 4 4,保证: x 1 = l , x 2 = r x_1=l,x_2=r x1=l,x2=r
对于测试点 5 5 5~ 8 8 8,保证: 1 ≤ r ≤ 1 × 1 0 5 1\le r\le 1\times 10^5 1≤r≤1×105
对于所有数据,保证: 1 ≤ l ≤ x 1 , x 2 ≤ r ≤ 1 0 9 , q ≤ 1 × 1 0 5 1\le l\le x_1,x_2 \le r\le 10^{9},q\le 1\times 10^5 1≤l≤x1,x2≤r≤109,q≤1×105
难度评定:NOIP普及组T2难度。