QOJ.ac

QOJ

時間限制: 120 s 記憶體限制: 1024 MB 總分: 42

#12442. 音乐和弦

统计

Lauren 正在尝试用竖琴演奏出最动听的音符。竖琴是一个半径为 $R$ 厘米的圆。要演奏一个音符,必须将一根弦连接到圆周上的两个不同的连接点上。然后,Lauren 拨动这根弦来演奏音符。

圆形的竖琴圆周上有 $N$ 个连接点,弦可以连接在这些点上。第 $i$ 个连接点位于圆周上,从圆周最右侧的点开始顺时针测量,位置为 $D_i$ 纳度($1$ 纳度为 $10^{-9}$ 度)。

并非所有的连接点都使用相同的技术来固定弦。第 $i$ 个连接点需要 $L_i$ 厘米的弦来固定。连接两个不同连接点 $i$ 和 $j$ 的弦需要恰好 $L_i + L_j + \text{distance}(i, j)$ 厘米长。这里 $\text{distance}(i, j)$ 指的是连接第 $i$ 个和第 $j$ 个连接点的几何弦长,即两点之间的欧几里得距离。

Lauren 认为弦越长,音符听起来就越好。请问 Lauren 的竖琴可以使用哪 $K$ 根最长的弦?

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含三个整数:$N$、$R$ 和 $K$,分别表示连接点的数量、圆形竖琴的半径(单位:厘米)以及 Lauren 感兴趣的弦的长度数量。

接下来的 $N$ 行描述了连接点。第 $i$ 行包含两个整数 $D_i$ 和 $L_i$,分别描述了第 $i$ 个连接点的位置(从竖琴最右侧点开始顺时针测量的纳度数)和固定该点所需的弦长(单位:厘米)。

输出格式

对于每个测试用例,输出一行 Case #x: y1 y2 ... yK,其中 $x$ 是测试用例编号(从 $1$ 开始),$y_n$ 是 Lauren 的竖琴上所有 $N \times (N-1)/2$ 根可用弦的长度列表中的第 $n$ 个值,按非递增顺序排列。

如果每个 $y_n$ 与正确答案的绝对误差或相对误差在 $10^{-9}$ 以内,则被视为正确。有关该定义的解释以及我们接受的实数格式,请参阅 FAQ。

数据范围

时间限制:每个测试集 120 秒。 内存限制:1GB。 $1 \le T \le 100$。 $N = 150000$ 的情况最多有 10 个。 在所有 $N \neq 150000$ 的情况下,$5 \le N \le 10^4$。 $1 \le R \le 10^9$。 $0 \le D_1$。 对于所有 $i$,$D_i < D_{i+1}$。 $D_N < 360 \times 10^9$。

测试集 1(可见判定)

对于每个 $i$,$L_i$ 在 $1$ 到 $10^9$ 之间独立均匀随机选择。 $K = 1$。

测试集 2(隐藏判定)

对于所有 $i$,$1 \le L_i \le 10^9$。 (不保证 $L_i$ 的生成方式。) $K = 10$。

样例

输入 1

2
5 2 1
0 3
1234567890 3
3154510113 3
180000000000 3
359999999999 3
5 10 1
90000000000 8
180000000000 7
260000000000 9
260000000001 1
260000000002 1

输出 1

Case #1: 10.0000000000
Case #2: 36.9238939618

说明

上述样例符合测试集 1 的限制。本节末尾提供了另一个不符合这些限制的样例。

注意:测试集 1 样例中的 $L_i$ 值是为了方便理解而选择的,并非随机生成。您的解决方案将针对这些样例进行运行,并且必须通过它们。

在样例 1 中,所有的连接点具有相同的值,因此我们应该选择由最长弦连接的一对点,在本例中是圆的水平直径,长度为 4 厘米。所以所需的总长度为 $4 + 3 + 3 = 10$ 厘米。

在样例 2 中,第四个和第五个点非常靠近第三个点,但 $L$ 值要小得多。我们可以有效地排除它们,并将重点放在前三个点之间的可能连接上,如下所示: 第一点和第二点:长度 $10\sqrt{2} + 8 + 7 \approx 29.142136$。 第一点和第三点:长度 $\approx 19.923894 + 8 + 9 \approx 36.923894$。 * 第二点和第三点:长度 $\approx 12.855726 + 7 + 9 \approx 28.855726$。

使用第一点和第三点能给我们带来最大的总长度。

以下额外样例不会出现在测试集 1 中,但可能出现在测试集 2 中:

1
6 1 10
0 10
15000000000 1
30000000000 1
45000000000 1
60000000000 1
75000000000 1

正确输出为 Case #1: 12.2175228580 12.0000000000 11.7653668647 11.5176380902 11.2610523844 3.0000000000 2.7653668647 2.7653668647 2.5176380902 2.5176380902

请注意,有三对可能的点并列产生第 9 长的弦。此外,连接不同点对的线相交也是可以的,因为 Lauren 一次只会演奏一个音符。

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.