QOJ.ac

QOJ

总分: 100

#11147. 车站

统计

Bitocja 是一个拥有 $n$ 座城市的巨大国家,城市编号从 $1$ 到 $n$。Bitocja 位于笛卡尔坐标平面上。第 $i$ 座城市的坐标为 $(x_i, y_i)$,且不存在两座城市位于同一坐标点。

城市数量众多固然意味着国家强大且管理有方,但并非所有人都对此感到满意。新当选的 Bitomir 总理负责规划传统的节日游行,游行需要访问所有城市并回到起点。然而,Bitomir 的民众支持率并不如他所愿——如果他选择的城市访问顺序不能使游行路线达到最优(即最短)长度,公民们就会抱怨浪费公共资金。而寻找这样一条最优路线(通常称为旅行商问题,属于所谓的 NP-难问题)需要巨大的计算能力,因此当 Bitocja 国王得知所需计算机的数量和成本后,他很快同意缩减今年游行的规模。

最终决定游行只访问 $n$ 座城市中的 $k$ 座。Bitomir 可以自由选择城市(他可以告诉公民这些是文化和历史最丰富的城市),但他必须在选定的城市中提出一个最优的访问顺序,即总路线长度必须在 $k!$ 种可能性中最小。

你能帮助 Bitomir 吗?形式化地说,你需要从给定的 $n$ 个点中选择 $k$ 个点,并按某种顺序输出。设你的路线总长度为 $A$。如果检查程序发现你输出的点的顺序使得总长度小于 $A \cdot (1 - 10^{-9})$,你将获得该测试点的“错误答案”判决。由城市 $P_1, P_2, \dots, P_k$ 组成的路线总长度定义为 $k$ 段欧几里得距离之和: $$d(P_1, P_2) + d(P_2, P_3) + \dots + d(P_{k-1}, P_k) + d(P_k, P_1)$$ 其中点 $P_a(x_a, y_a)$ 和 $P_b(x_b, y_b)$ 之间的欧几里得距离为: $$d(P_a, P_b) = \sqrt{(x_a - x_b)^2 + (y_a - y_b)^2}$$ 如果三座城市位于同一直线上,且两座城市之间的路线恰好经过第三座城市,不必担心——游行队伍只需利用 Bitocja 众多的桥梁和立交桥绕过它即可。

输入格式

输入的第一行包含两个整数 $n$ 和 $k$ ($n = 300\,000, k = 500$),分别表示 Bajtocja 的城市总数和游行需要经过的城市数量。注意:题目中的样例测试不满足这些条件,且系统测试中不包含该样例(提交的解决方案不会在该样例上运行)。

接下来的 $n$ 行中,第 $i$ 行包含两个整数 $x_i$ 和 $y_i$ ($-10^8 \le x_i, y_i \le 10^8$),表示第 $i$ 座城市的坐标。对于 $i \neq j$,满足 $x_i \neq x_j$ 或 $y_i \neq y_j$。

输出格式

输出 $k$ 行,每行包含两个整数 $x_i, y_i$,用空格分隔,表示游行路线上依次访问的城市坐标。任何城市不得重复。输出任意一个正确解即可。

样例

输入 1

6 4
-10 -10
-10 10
10 -10
50 10
10 10
48 10

输出 1

-10 10
48 10
50 10
-10 -10

说明 1

输出的 $k = 4$ 座城市产生的总长度为: $$\sqrt{58^2 + 0^2} + \sqrt{2^2 + 0^2} + \sqrt{60^2 + 20^2} + \sqrt{0^2 + 20^2} \approx 143.246$$ 这四座城市的任何访问顺序都不会产生更小的总长度,因此输出是正确解之一。提醒:此样例测试不包含在 SIO 的测试用例中。


或者逐个上传:

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.