QOJ.ac

QOJ

Time Limit: 3.0 s Memory Limit: 256 MB Total points: 100 Hackable ✓

#15395. Circles Are Far from Each Other

統計

给定 $n$ 个圆以及两个整数参数 $k$ 和 $\ell$。第 $i$ 个圆的半径为 $r_i$,且对于任意 $1 \leq i < j \leq n$ 满足 $r_i \geq r_j$。任务是在二维平面上绘制这 $n$ 个圆,使得同时满足以下条件。在讨论条件之前,先回顾以下定义:

  • 每个圆由其圆心 $O$ 和半径 $r$ 唯一确定。
  • 半径为 $r$ 的圆定义为所有到圆心 $O$ 的距离恰好为 $r$ 的点的集合。本题中所有距离均为欧几里得距离。
  • 圆的内部区域定义为所有到圆心 $O$ 的距离小于 $r$ 的点的集合。
  • 如果圆 $C'$ 的所有点都位于圆 $C$ 的内部区域内,则称圆 $C$ 包含圆 $C'$。

你需要绘制这 $n$ 个圆以满足以下所有条件:

  1. 所有圆的圆心共线。
  2. 任意两个圆心之间的距离最多为 $k$。
  3. 任意两个圆不相交。
  4. 如果一个圆包含两个圆 $C$ 和 $C'$,则 $C$ 包含 $C'$ 或 $C'$ 包含 $C$。
  5. 前 $\ell$ 个圆可以被其他圆包含,也可以不被包含,而其余 $n - \ell$ 个圆中的每一个都必须至少被一个圆包含。

满足上述所有条件的排列称为可行排列。对于一个可行排列 $\mathcal{A}$,定义其质量 $d(\mathcal{A})$ 为属于不同圆的任意两点之间的最小距离。

如果对于给定情况至少存在一个可行排列,输出所有可行排列中可能的最大质量。如果不存在可行排列,输出 0。

样例 1 的一个可行排列。

样例 1 的一个不可行排列。

输入格式

第一行包含三个整数 $k$、$n$ 和 $\ell$,分别表示圆心之间的最大距离、要绘制的圆的数量,以及可以被包含也可以不被包含的圆的数量。

第二行包含 $n$ 个整数 $r_1, r_2, \dots, r_n$,其中 $r_i$ 是第 $i$ 个圆的半径。

  • $1 \leq k \leq 10^9$
  • $2 \leq n \leq 10^5$
  • $1 \leq \ell \leq \min\{n, 200\}$
  • $1 \leq r_i \leq 10^9$
  • 对于任意 $1 \leq i < j \leq n$,$r_i \geq r_j$。

输出格式

如果不存在可行排列,输出单个整数 0。

否则,输出所有可行排列 $\mathcal{A}$ 中可能的最大质量 $d(\mathcal{A})$,格式如下:

  • 如果 $d(\mathcal{A})$ 是整数,则输出该整数。
  • 如果 $d(\mathcal{A})$ 不是整数,则以有理数形式 $a/b$ 输出,要求 $1 \leq a, b \leq 10^9$,$\gcd(a, b) = 1$,且 $|d(\mathcal{A}) - a/b|$ 最小。如果存在多个满足条件的有理数,输出任意一个即可。

样例

输入 1

15 4 3
7 5 3 1

输出 1

3

输入 2

14 6 1
7 5 4 3 2 1

输出 2

1

输入 3

14 2 2
5 4

输出 3

5

输入 4

22 4 4
4 4 1 1

输出 4

10/3

输入 5

13 3 3
6 3 1

输出 5

4

说明

样例 1 的解释:第一张图展示了一个可行排列,其中每个圆及其圆心用独特的颜色标出。

在此排列中,属于不同圆的任意两点之间的最小距离为 3,见证该距离的两个点被标记为红点。因此,该排列的质量为 3,这是该情况下所有可行排列中可能的最大值。注意,只有圆 4 被要求包含在另一个圆内,而其余圆可以被包含也可以不被包含。第二张图展示了一个不可行排列。在这种情况下,圆 1 同时包含了圆 3 和圆 4,但这两个圆互不包含,从而违反了条件 4。

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.