QOJ.ac

QOJ

時間限制: 3.0 s 記憶體限制: 1024 MB 總分: 100 可 Hack ✓

#9887. 笛卡尔树

统计

给定一个排列 $A = (A_1, A_2, \dots, A_N)$,它是 $(1, 2, \dots, N)$ 的一个排列。 对于一对整数 $l, r$ ($1 \le l \le r \le N$),我们定义笛卡尔树 $C(l, r)$ 如下:

  • $C(l, r)$ 是一棵包含 $r - l + 1$ 个节点的有根二叉树。我们将这棵树的根节点记为 $rt$。
  • 令 $m$ 为满足 $A_m = \min\{A_l, A_{l+1}, \dots, A_r\}$ 的唯一整数。
  • 如果 $l < m$,则 $rt$ 的左子树为 $C(l, m - 1)$。如果 $l = m$,则 $rt$ 没有左孩子。
  • 如果 $m < r$,则 $rt$ 的右子树为 $C(m + 1, r)$。如果 $m = r$,则 $rt$ 没有右孩子。

给定 $Q$ 对整数 $(l_1, r_1), (l_2, r_2), \dots, (l_Q, r_Q)$。请确定在 $C(l_1, r_1), C(l_2, r_2), \dots, C(l_Q, r_Q)$ 中有多少个不同的笛卡尔树。

当且仅当满足以下所有条件时,两棵笛卡尔树 $X$ 和 $Y$ 被认为是相同的:

  • 令 $X$ 的根为 $rt_X$,$Y$ 的根为 $rt_Y$。
  • 如果 $rt_X$ 有左孩子,则 $rt_Y$ 也必须有左孩子,且 $rt_X$ 和 $rt_Y$ 的左子树是相同的笛卡尔树。
  • 如果 $rt_X$ 没有左孩子,则 $rt_Y$ 也必须没有左孩子。
  • 如果 $rt_X$ 有右孩子,则 $rt_Y$ 也必须有右孩子,且 $rt_X$ 和 $rt_Y$ 的右子树是相同的笛卡尔树。
  • 如果 $rt_X$ 没有右孩子,则 $rt_Y$ 也必须没有右孩子。

输入格式

输入格式如下:

$N$ $A_1 \ A_2 \ \dots \ A_N$ $Q$ $l_1 \ r_1$ $l_2 \ r_2$ $\vdots$ $l_Q \ r_Q$

  • 所有输入值均为整数。
  • $1 \le N \le 4 \times 10^5$。
  • $A$ 是 $(1, 2, \dots, N)$ 的一个排列。
  • $1 \le Q \le 4 \times 10^5$。
  • $1 \le l_i \le r_i \le N$ ($1 \le i \le Q$)。
  • $(l_i, r_i) \neq (l_j, r_j)$ ($1 \le i < j \le Q$)。

输出格式

输出给定区间对 $(l_1, r_1), (l_2, r_2), \dots, (l_Q, r_Q)$ 中不同笛卡尔树的数量。

样例

样例输入 1

6
1 4 2 6 3 5
3
1 4
2 5
3 6

样例输出 1

2

样例输入 2

4
1 2 3 4
10
1 1
2 2
3 3
4 4
1 2
2 3
3 4
1 3
2 4
1 4

样例输出 2

4

样例输入 3

10
3 8 4 7 2 5 9 10 1 6
13
5 8
2 6
7 9
3 8
3 5
2 4
4 6
1 9
3 7
6 9
2 10
4 9
3 9

样例输出 3

11

说明

在第一个样例中,$C(1, 4), C(2, 5), C(3, 6)$ 分别为以下笛卡尔树:

$C(1, 4)$ 和 $C(3, 6)$ 是相同的笛卡尔树,而 $C(2, 5)$ 与它们不同。因此,共有 2 个不同的笛卡尔树。

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.