可爱的线段树

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 lxr.包含 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 1r1×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 1lx1,x2r109,q1×105

难度评定:NOIP普及组T2难度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值