QOJ.ac

QOJ

実行時間制限: 1.0 s メモリ制限: 256 MB 満点: 100 ハック可能 ✓

#15171. 覆盖大师

統計

线段树是一种二叉树,它的每个节点都可以覆盖一个区间。线段树中的节点是叶子节点当且仅当它仅覆盖一个位置(即其区间仅包含一个整数)。对于覆盖区间 $[a, b]$ 的非叶子节点,其左子节点的区间为 $[a, \lfloor \frac{a+b}{2} \rfloor]$,右子节点的区间为 $[\lfloor \frac{a+b}{2} \rfloor + 1, b]$。因此,当我们知道根节点的覆盖区间 $[1, n]$ 时,就可以唯一地确定该线段树的结构。

可以证明,对于给定的区间 $[l, r]$,只有一种华丽覆盖(gorgeous-cover)方式,我们将其记为 $w[l, r]$,它表示覆盖 $[l, r]$ 所需的最少区间数量。

例如,在这棵 $[1, 10]$ 的线段树中,$w[3, 6] = 3$。被选中的区间已被涂成红色($[3, 3]$,$[4, 5]$,$[6, 6]$)。

给定 $n, l, r, k$,你需要在 $[1, n]$ 线段树中找到一个最短的区间 $[l', r']$,满足 $l' \le l \le r \le r'$ 且 $w[l', r'] \le k$。保证 $k \le w[l, r]$。

输入格式

第一行包含一个整数 $T$ ($T \le 10^5$),表示测试用例的数量。

接下来的 $T$ 行,每行包含 4 个整数 $n, l, r, k$ ($1 \le l \le r \le n \le 10^{18}$,$1 \le k \le w[l, r]$)。

输出格式

对于每个测试用例,在一行中输出一个整数,表示最短区间的长度。注意,区间 $[l, r]$ 的长度为 $r - l$。

样例

输入样例 1

2
10 3 6 1
10 2 6 3

输出样例 1

9
5

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.