QOJ.ac

QOJ

実行時間制限: 1.0 s メモリ制限: 256 MB 満点: 100

#16970. 防鹿围栏

統計

Magnus 叔叔在他的农场上种植了一些幼苗,作为他重新造林计划的一部分。不幸的是,鹿喜欢吃鲜嫩的幼苗嫩芽和叶子,因此有必要在它们周围建造保护性栅栏。由于鹿和其他啃食幼苗的动物可以够到栅栏内的一定距离,因此每个栅栏与每棵幼苗之间必须保持至少一个最小距离(即安全边距)。

防鹿栅栏非常昂贵,因此 Magnus 叔叔希望最小化所使用的栅栏总长度。你的任务是编写一个程序,计算围住并保护这些幼苗所需的最小栅栏总长度。栅栏可以包含直段和弯曲段。你可以设计一个围住所有幼苗的单一栅栏,也可以设计多个围住不同幼苗分组的独立栅栏。

图 6 展示了两个示例配置,每个配置都包含三棵具有不同边距要求的幼苗。在上方配置中(对应于第一个样例输入),最小长度的解决方案由两个独立的栅栏组成。在下方配置中(对应于第二个样例输入),最小长度的解决方案由一个单一的栅栏组成。

图 6:防鹿栅栏

输入格式

输入包含多个测试用例。每个测试用例的第一行包含两个整数 $N$($0 < N \le 9$),表示幼苗的数量,以及 $M$($0 < M \le 200$),表示每棵幼苗周围所需的边距。

接下来是 $N$ 行,其中每行包含两个整数 $x$ 和 $y$,表示一棵幼苗的直角坐标($|x| \le 100$ 且 $|y| \le 100$)。没有两棵幼苗位于同一位置。为简单起见,所有幼苗均可视为点,且防鹿栅栏的厚度可视为零。

最后一个测试用例之后是一行,包含两个零。

输出格式

对于每个测试用例,输出测试用例编号(从 1 开始),后跟保护具有给定边距的幼苗所需的最小栅栏总长度。输出的长度应保留小数点后两位。请遵循样例输出的格式。

样例

输入样例 1

3 2 
0 0 
2 0 
10 0 
3 4 
0 0 
2 0 
10 0 
0 0

输出样例 1

Case 1: length = 29.13 
Case 2: length = 45.13

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.