QOJ.ac

QOJ

Limite de temps : 2 s Limite de mémoire : 512 MB Points totaux : 100

#3316. 公平切巧克力

Statistiques

你有一块凸多边形形状的平整巧克力。你需要用一把直刀将其切成面积完全相等的两块。

编写一个程序,对于给定的凸多边形,计算将该多边形平分为两个相等面积的线段的最大长度和最小长度。

下图对应前两个样例输入。图中每块巧克力上的两条虚线分别对应平分面积的最小长度切线和最大长度切线。

图 F.1. 巧克力样本与切线

输入格式

输入包含单个测试用例,格式如下:

$n$ $x_1 \ y_1$ $\vdots$ $x_n \ y_n$

第一行包含一个整数 $n$,表示给定多边形的顶点数。其中,$3 \le n \le 5000$。接下来的 $n$ 行,每行包含两个整数 $x_i$ 和 $y_i$,按逆时针顺序给出多边形第 $i$ 个顶点的坐标 $(x_i, y_i)$。$x_i$ 和 $y_i$ 均在 $0$ 到 $100\,000$ 之间(含边界)。

该多边形保证是简单且凸的。换句话说,多边形的任意两条边互不相交,且所有顶点的内角均小于 $180^\circ$。

输出格式

输出两行。第一行应包含将多边形平分为两个相等面积部分的线段的最小长度。第二行应包含此类线段的最大长度。如果输出值的绝对误差或相对误差小于 $10^{-6}$,则视为正确。

样例

样例输入 1

4
0 0
10 0
10 10
0 10

样例输出 1

10
14.142135623730950488

样例输入 2

3
0 0
6 0
3 10

样例输出 2

4.2426406871192851464
10.0

样例输入 3

5
0 0
99999 20000
100000 70000
33344 63344
1 50000

样例输出 3

54475.580091580027976
120182.57592539864775

样例输入 4

6
100 350
101 349
6400 3440
6400 3441
1200 7250
1199 7249

样例输出 4

4559.2050019027964982
6216.7174287968524227

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.