QOJ.ac

QOJ

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

#17236. 游走

الإحصائيات

在一个未知的大城市中寻找目的地可能会充满挑战,特别是对于像 Kirk 这样总是试图走最短路径的计算机科学家来说。规划可以提供帮助——给定城市地图,Kirk 希望找到他的当前位置与目的地之间的最短路径。

城市地图可以在平面上表示为一个由单位正方形组成的无限网格。

Kirk 目前位于正方形 $(0, 0)$,他的目的地是正方形 $(X, Y)$。

城市中有 $N$ 栋建筑物。每栋建筑物都是一个完全占据若干单位正方形的矩形。任意两栋建筑物都不会接触或重叠,也就是说,Kirk 可以自由地在每栋建筑物周围行走。一栋建筑物通过指定其占用的两个对角顶点正方形的坐标来定义。

在每一步中,Kirk 可以走到四个相邻正方形之一,但他不允许步入被建筑物占领的正方形。他的当前位置位于城市的西入口,且每个被建筑物占领的正方形的 $x$ 坐标都严格大于零。

编写一个程序,在给定建筑物位置的情况下,寻找一条从 Kirk 当前位置到其目的地的最短路径。路径应报告为一系列垂直和水平线段,且任意两条相邻线段不平行。路径的长度是路径中包含的正方形数量,不包括初始正方形。

输入格式

输入的第一行包含两个整数 $X, Y$ ($1 \le X \le 10^6$, $-10^6 \le Y \le 10^6$) —— 目的地正方形的坐标。

输入的第二行包含一个整数 $N$ ($0 \le N \le 100\,000$) —— 城市中建筑物的数量。

接下来的 $N$ 行,每行包含四个整数 $X_1, Y_1, X_2, Y_2$ ($1 \le X_1, X_2 \le 10^6$, $-10^6 \le Y_1, Y_2 \le 10^6$) —— 被建筑物占领的两个对角顶点正方形的坐标。

输出格式

输出的第一行应包含一个整数 $L$ —— 到达目的地的最短路径长度。

输出的第二行应包含一个整数 $M$ —— 最短路径中的线段数量。线段数量 $M$ 不能超过 $1\,000\,000$。

接下来的 $M$ 行,每行应包含两个整数 $DX$ 和 $DY$,描述 Kirk 在一个线段中的相对移动。对于每个线段,值 $DX, DY$ 中有且仅有一个应为零,且任意两条相邻线段不能平行。

注意:如果存在多个解,您可以输出其中任意一个。

子任务

对于未完全正确或不完整的解法,如果其正确找到了最短路径的长度,将获得部分分数。

如果最小长度正确,您将获得对应测试点 $80\%$ 的分数。

如果您选择仅寻找最小长度,则无需输出其他任何内容(即只需输出 $L$)。

样例

输入格式 1

9 1
2
5 -3 8 3
10 -3 13 3

输出格式 1

16
3
0 4
9 0
0 -3

输入格式 2

12 0
5
2 -1 3 1
6 -7 8 -1
6 1 8 6
4 3 4 5
10 -5 10 3

输出格式 2

24
8
0 -2
4 0
0 2
5 0
0 4
2 0
0 -4
1 0

说明

样例 1 对应的输入与解

样例 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.