QOJ.ac

QOJ

حد الوقت: 1.0 s حد الذاكرة: 2048 MB مجموع النقاط: 100

#16471. 在二叉树上行走

الإحصائيات

给你一棵无限大的完全二叉树,其顶点用正整数标号。根节点为顶点 $1$,对于每个顶点 $x$ ($x \ge 2$),其父节点为 $\lfloor \frac{x}{2} \rfloor$。

给你一个长度为 $N$ 的字符串 $S = S_0 S_1 \dots S_{N-1}$。$S$ 中的每个字符要么是 'L',要么是 'R'。

考虑以下过程:你当前位于某个顶点 $u$,并希望通过在树上重复移动来到达顶点 $v$。

在第 $i$ 次移动(从 $1$ 开始计数)中,假设你当前位于顶点 $x$。你可以选择以下移动之一:

  • 向下移动:如果 $S_{(i-1) \bmod N}$ 是 'L',则移动到顶点 $2x$。否则,移动到顶点 $2x + 1$。
  • 向上移动:仅当 $x \ge 2$ 时可选。移动到顶点 $\lfloor \frac{x}{2} \rfloor$。

注意,你不能停留在同一个顶点。

给你 $Q$ 个独立的询问。在第 $i$ 个询问中,你从顶点 $u_i$ 出发,想要到达顶点 $v_i$。

对于每个询问,确定是否可以从 $u_i$ 到达 $v_i$。如果可以,求出所需的最少移动次数。

输入格式

输入按以下格式给出:

N
S
Q
u_1 v_1
u_2 v_2
:
u_Q v_Q

数据范围

  • $1 \le N \le 10^6$
  • $1 \le Q \le 200\,000$
  • $1 \le u_i, v_i \le 10^{18}$ ($1 \le i \le Q$)
  • $N, Q, u_i$ 和 $v_i$ 均为整数。
  • $S$ 是一个长度为 $N$ 且仅由 'L' 和 'R' 组成的字符串。

输出格式

输出 $Q$ 行。在第 $i$ 行中,如果可以从 $u_i$ 到达 $v_i$,则输出所需的最少移动次数;否则,输出 "-1"。

样例

输入样例 1

5
LLRLR
3
1 12
9 2
913 2025

输出样例 1

7
2
23

输入样例 2

1
L
1
1 3

输出样例 2

-1

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.