QOJ.ac

QOJ

Limite de temps : 5 s Limite de mémoire : 1024 MB Points totaux : 100

#113. 高尔夫

Statistiques

JOI-kun 正在一个特殊的球场练习高尔夫。

这个球场是一个 $xy$ 坐标平面。球场上有 $N$ 个障碍物。第 $i$ 个障碍物($1 \le i \le N$)占据了一个矩形区域,其 $x$ 坐标满足 $A_i \le x \le B_i$,且 $y$ 坐标满足 $C_i \le y \le D_i$。任意两个障碍物(包括它们的边界)互不相交。

在这个球场中,起点为 $(S, T)$,终点为 $(U, V)$。这两个点互不相同,且不包含在任何障碍物及其边界内。起初,高尔夫球放置在起点。

JOI-kun 可以击打高尔夫球,使其沿平行于坐标轴的四个方向之一移动任意距离。但是,球的轨迹不能接触任何障碍物的内部。球可以穿过障碍物的边界,也可以停在障碍物的边界上。之后,他可以通过击球改变方向,向没有障碍物的方向移动。

JOI-kun 想知道完成球场所需的最小击球次数。作为 JOI-kun 的高尔夫球友,他请你计算这个次数。

从起点到终点移动高尔夫球所需的最小击球次数是多少?

题目描述

给定高尔夫球场的信息,编写一个程序,计算将高尔夫球从起点移动到终点所需的最小击球次数。

输入格式

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

  • 第一行包含四个空格分隔的整数 $S, T, U, V$。这意味着起点的 $x$ 坐标为 $S$,起点的 $y$ 坐标为 $T$,终点的 $x$ 坐标为 $U$,终点的 $y$ 坐标为 $V$。
  • 第二行包含一个整数 $N$,即障碍物的数量。
  • 接下来的 $N$ 行中,第 $i$ 行($1 \le i \le N$)包含四个空格分隔的整数 $A_i, B_i, C_i, D_i$。这意味着第 $i$ 个障碍物占据的矩形区域满足 $A_i \le x \le B_i$ 且 $C_i \le y \le D_i$。

输出格式

向标准输出写入一行。输出包含将高尔夫球从起点移动到终点所需的最小击球次数。

数据范围

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

  • $1 \le S \le 1\,000\,000\,000$
  • $1 \le T \le 1\,000\,000\,000$
  • $1 \le U \le 1\,000\,000\,000$
  • $1 \le V \le 1\,000\,000\,000$
  • $1 \le N \le 100\,000$
  • $1 \le A_i < B_i \le 1\,000\,000\,000$ ($1 \le i \le N$)
  • $1 \le C_i < D_i \le 1\,000\,000\,000$ ($1 \le i \le N$)
  • $(S, T) \neq (U, V)$
  • 任意两个障碍物(包括它们的边界)互不相交。
  • 起点和终点不包含在任何障碍物及其边界内。

子任务

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

子任务 1 [10 分]

  • $S \le 1\,000$
  • $T \le 1\,000$
  • $U \le 1\,000$
  • $V \le 1\,000$
  • $N \le 1\,000$
  • $B_i \le 1\,000$ ($1 \le i \le N$)
  • $D_i \le 1\,000$ ($1 \le i \le N$)

子任务 2 [20 分]

  • $N \le 1\,000$

子任务 3 [70 分]

  • 无附加限制。

样例

样例输入 1

3 5 8 6
1
5 6 2 8

样例输出 1

3

说明 1

在此样例输入中,例如,JOI-kun 可以将高尔夫球按 $(3,5) \to (3,2) \to (8,2) \to (8,6)$ 的路径从起点移动到终点;他需要三次击球。由于不可能用少于三次的击球移动球,因此输出 3。

样例输入 2

1 1 1 10
3
5 6 2 8
1 2 2 3
8 10 3 5

样例输出 2

1

说明 2

在此样例输入中,JOI-kun 需要一次击球即可将高尔夫球从起点移动到终点。

样例输入 3

20 68 85 74
5
30 70 14 100
5 24 15 67
75 86 75 79
75 90 19 62
93 98 26 58

样例输出 3

4

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.