#P13303. [GCJ 2013 Finals] Drummer

    ID: 13120 远端评测题 6000~12000ms 1024MiB 尝试: 3 已通过: 0 难度: 8 上传者: 标签>计算几何2013Special Judge凸包旋转卡壳Google Code Jam

[GCJ 2013 Finals] Drummer

Description

在任何乐队中,鼓手都扮演着极其重要的角色——负责保持节奏。如果鼓手的节奏不稳定,可能会毁掉整场演出。

你是一支极受欢迎的摇滚乐队的主唱,而你现在遇到了一个小麻烦。你的鼓手刚刚辞职,去做职业电子游戏玩家了。你必须立刻找到新的鼓手。幸运的是,候选人并不缺乏,每个人都想加入你的乐队。你的任务是从中选出节奏最稳定的那个人。

你的计划如下:你会让每个候选人单独试音。在试音时,候选人会用鼓槌敲击鼓面若干次。理想情况下,相邻两次敲击之间的时间间隔应该完全相同,从而形成完美的节奏。在完美节奏中,敲击的时间戳应当呈如下等差数列:T0T_0T0+KT_0 + KT0+2×KT_0 + 2\times K\dotsT0+(N1)×KT_0 + (N - 1)\times K

当然,在现实生活中,人类几乎不可能打出完全完美的节奏。因此,每个候选人的节奏都会有一个误差 EE,即每个 TiT_i 与某个完美节奏的时间戳最多相差 EE。现在,给定一个候选人的敲击时间序列,请你求出所有可能的完美节奏中,误差 EE 的最小值。

Input Format

第一行为测试用例数 TT。接下来有 TT 个测试用例。每个测试用例包含两行,代表一位候选人的试音。第一行为一个整数 NN。第二行为 NN 个用空格分隔的整数,表示候选人每次敲击的时间戳(单位为毫秒),按递增顺序给出。

Output Format

对于每个测试用例,输出一行 "Case #x: E",其中 xx 为测试用例编号(从 1 开始),EE 为所有可能的误差中的最小值。

只要你的答案与正确答案的绝对误差或相对误差不超过 10610^{-6},就会被判为正确。

3
2
10 70
4
0 10 19 30
6
2 5 10 15 20 24
Case #1: 0
Case #2: 0.5
Case #3: 0.75

Hint

限制条件

  • 1T1001 \leq T \leq 100

小数据集(9 分,测试集 1 - 可见)

  • 时间限制:60 6 秒
  • 2N102 \leq N \leq 10
  • 0Ti1000 \leq T_i \leq 100

大数据集(20 分,测试集 2 - 隐藏)

  • 时间限制:120 12 秒
  • 90% 的测试点满足 2N10002 \leq N \leq 1000
  • 所有测试点满足 2N500002 \leq N \leq 50000
  • 0Ti1060 \leq T_i \leq 10^6

翻译由 ChatGPT-4.1 完成。