QOJ.ac

QOJ

実行時間制限: 2 s メモリ制限: 512 MB 満点: 100

#365. 铁路旅行

統計

JOI Railways 是一家运营一条铁路线的公司。在 JOI Railways 的铁路上,有 $N$ 个车站,它们在一条直线上,编号从 $1$ 到 $N$。对于每个 $i$ ($1 \le i \le N - 1$),车站 $i$ 和车站 $i + 1$ 之间由一段铁轨连接。

JOI Railways 有 $K$ 种类型的列车,双向运行。列车类型用 $1$ 到 $K$ 之间的整数表示。每个车站都有一个等级,等级是 $1$ 到 $K$ 之间的整数。对于每个 $i$ ($1 \le i \le N$),车站 $i$ 的等级为 $L_i$。两端的车站,即车站 $1$ 和车站 $N$,等级均为 $K$。

$j$ 型列车 ($1 \le j \le K$) 会在所有等级大于或等于 $j$ 的车站停靠,而在其他任何车站均不停靠。由于两端车站(即车站 $1$ 和车站 $N$)的等级为 $K$,因此所有列车都会在这些车站停靠。

每天都有许多乘客乘坐 JOI Railways。在旅行过程中,他们可以乘坐与目的地方向相反的列车,也可以经过目的地。旅行结束时,他们必须在目的地车站下车。乘客不喜欢频繁停靠。因此,他们试图寻找一条中间停靠次数最少的路线,而不考虑经过的车站数量或换乘次数。如果乘客在某个车站换乘列车,我们将其计为一次停靠。出发站的首次停靠和目的地车站的最后停靠不计为中间停靠。

你的任务是编写一个程序,回答每位乘客关于最少中间停靠次数的查询。

输入格式

从标准输入读取以下数据。

  • 第一行包含三个空格分隔的整数 $N, K, Q$。这表示 JOI Railways 有 $N$ 个车站,$K$ 种类型的列车,以及 $Q$ 个关于两站之间旅行的查询。
  • 接下来的 $N$ 行中,第 $i$ 行 ($1 \le i \le N$) 包含一个整数 $L_i$,表示车站 $i$ 的等级。
  • 接下来的 $Q$ 行中,第 $k$ 行 ($1 \le k \le Q$) 包含两个空格分隔的整数 $A_k, B_k$。这表示第 $k$ 位乘客的出发站和目的地分别是车站 $A_k$ 和 $B_k$。

输出格式

向标准输出写入 $Q$ 行。第 $k$ 行 ($1 \le k \le Q$) 包含从车站 $A_k$ 到车站 $B_k$ 的路线中最少的中间停靠次数。

数据范围

所有输入数据满足以下条件:

  • $2 \le N \le 100\,000$。
  • $1 \le K \le N$。
  • $1 \le Q \le 100\,000$。
  • $1 \le L_i \le K$ ($1 \le i \le N$)。
  • $1 \le A_k \le N$ ($1 \le k \le Q$)。
  • $1 \le B_k \le N$ ($1 \le k \le Q$)。
  • $A_k \neq B_k$ ($1 \le k \le Q$)。

子任务

共有 4 个子任务。各子任务的分数和附加限制如下:

子任务 1 [5 分] $N \le 100$。 $K \le 100$。 * $Q \le 50$。

子任务 2 [15 分] * $Q \le 50$。

子任务 3 [25 分] * $K \le 20$。

子任务 4 [55 分] * 无附加限制。

样例

样例输入 1

9 3 3
3
1
1
1
2
2
2
3
3
2 4
4 9
6 7

样例输出 1

1
3
0

说明

在此样例输入中,给出了三个关于两站之间旅行的查询。

  • 第一个查询是关于从车站 2 到车站 4 的旅行。如果乘客乘坐 1 型列车从车站 2 到车站 4,则只有一个中间停靠站,即车站 3。
  • 第二个查询是关于从车站 4 到车站 9 的旅行。如果乘客乘坐 1 型列车从车站 4 到车站 5,然后乘坐 2 型列车从车站 5 到车站 1,最后乘坐 3 型列车从车站 1 到车站 9,则有三个中间停靠站,即车站 5、1、8。
  • 第三个查询是关于从车站 6 到车站 7 的旅行。如果乘客乘坐 2 型列车从车站 6 到车站 7,则没有中间停靠站。

样例输入 2

5 2 1
2
1
1
1
2
1 4

样例输出 2

1

注意,乘客在旅行过程中可以经过目的地。

样例输入 3

15 5 15
5
4
1
2
3
1
1
2
4
5
4
1
5
3
5
8 1
11 1
5 3
6 11
9 12
15 14
15 2
3 12
2 1
4 8
15 5
12 6
1 13
13 8
14 9

样例输出 3

2
1
1
3
2
0
3
4
0
1
3
4
1
2
2

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.