QOJ.ac

QOJ

実行時間制限: 1.0 s メモリ制限: 256 MB 満点: 100 ハック可能 ✓

#16758. 棱角太锋利!

統計

“Nanozavod, Inc.” 公司专门从事纳米机器人的设计和组装。现在他们在漫长的道路上遇到了另一个问题。人工关节需要精确长度的纳米带。开发人员可以制造已知长度的纳米带段,但它们太长了。现在他们正试图将一个线段切成长度相等的两部分。

纳米切割器看起来像一个空心的多棱柱,里面还有另一个棱柱。内棱柱具有非常锋利的棱,用于切割纳米带:当一段纳米带接触到内棱柱的任何一条棱时,它会立即在接触点被切断。不幸的是,如果纳米带与内棱柱的接触不仅是一个点,而是一段较长的线段(例如,它同时接触了棱柱的整条棱),那么整段纳米带就会被完全损毁。外棱柱用于固定纳米带:纳米带的两个端点必须放置在外棱柱的侧面上。纳米带的张力是完全均匀的。

因此,开发人员现在必须在外棱柱的侧面上找到两个点,使得连接这两个点的线段与内棱柱恰好有一个公共点,且该公共点是该线段的中点。

连接两个棱柱底面的所有侧棱都是平行的,因此问题可以简化为棱柱底面的相同二维问题。

两个棱柱顶点的坐标均为整数,底面顶点形成两个严格凸的多边形(即多边形没有 $180$ 度的角)。内多边形严格位于外多边形内部(它们的边界没有公共点)。你的任务是找到满足问题条件的任意线段端点的坐标。保证至少存在一个这样的线段。

输入格式

第一行输入包含两个整数:$M$ 表示外多边形的顶点数,$N$ 表示内多边形的顶点数($3 \le M, N \le 3 \cdot 10^5$)。

接下来的 $M + N$ 行每行包含两个整数 $x$ 和 $y$($|x|, |y| \le 10^7$),表示多边形顶点的坐标(前 $M$ 行为外多边形,接下来的 $N$ 行为内多边形)。每个多边形的顶点按逆时针顺序给出。

保证内多边形严格位于外多边形内部。

输出格式

输出四个实数 $x_1, y_1, x_2, y_2$,表示纳米带端点的坐标。

坐标的绝对误差不能超过 $\varepsilon = 10^{-4}$(即,必须存在该问题的一个精确解 $(X_1, Y_1, X_2, Y_2)$ 满足 $|x_1 - X_1| < \varepsilon$ 等)。如果存在多个答案,输出其中任意一个即可。

样例

输入样例 1

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

输出样例 1

2.000000 0.000000 2.000000 2.000000

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.