#P13325. [GCJ 2012 #2] Aerobics

    ID: 13139 远端评测题 4000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>贪心2012Special Judge随机化Google Code Jam

[GCJ 2012 #2] Aerobics

Description

有氧操课程开始了。教练说:“请大家在训练垫上站好,保证每个人都有足够的空间能自由挥动手臂,而且不会碰到其他人。”大家开始在垫子上走动,试图找到合适的位置。时间一分一秒过去,最终教练非常恼火,要求你写一个程序来给所有人安排正确的位置,希望这样比让他们自己慢慢挪要快!

你会得到课程所用垫子的尺寸(宽度和长度)。对于每位学员,都有一个属于她自己的圆形区域,半径等于她手臂的可达范围。这些圆不能相交,但可以相切;每个圆的圆心(即学员所站的位置)必须在垫子上。注意,手臂可以伸出垫子之外。你知道垫子的空间非常充足——垫子的面积至少是所有圆面积总和的五倍。所有学员都能按要求站下这一点始终成立。

Input Format

输入的第一行为测试用例数 T\mathbf{T}。接下来有 T\mathbf{T} 组测试数据。每组测试数据包含两行。第一行三个整数:N\mathbf{N}W\mathbf{W}L\mathbf{L},分别表示学员人数、垫子的宽度和长度。第二行包含 N\mathbf{N} 个整数 ri\mathbf{r}_i,表示第 ii 位学员的手臂可达半径。

Output Format

对于每个测试用例,输出一行 "Case #nn: yy",其中 nn 为测试用例编号(从 1 开始),yy 是一个包含 2N2\mathbf{N} 个数字的字符串,每个数字可以是整数或实数:x1\mathbf{x}_1y1\mathbf{y}_1x2\mathbf{x}_2y2\mathbf{y}_2,依此类推,其中 (xi,yi)(\mathbf{x}_i, \mathbf{y}_i) 表示第 ii 位学员应站的位置(0xiW0 \leq \mathbf{x}_i \leq \mathbf{W}0yiL0 \leq \mathbf{y}_i \leq \mathbf{L})。

由于学员在垫子上的站位方案可能有多种,你可以输出任意一个合法方案;但请注意,提交的输出文件不得超过 200kB。

2
2 6 6
1 1
3 320 2
4 3 2
Case #1: 0.0 0.0 6.0 6.0
Case #2: 0.0 0.0 7.0 0.0 12.0 0.0

Hint

限制条件

  • 1T501 \leq \mathbf{T} \leq 50
  • 1W,L1091 \leq \mathbf{W}, \mathbf{L} \leq 10^9
  • 1ri1051 \leq \mathbf{r}_i \leq 10^5
  • 垫子的面积至少是所有圆面积总和的 5 倍:
  • $5 \times \pi \times (\mathbf{r}_1^2 + \ldots + \mathbf{r}_\mathbf{N}^2) \leq \mathbf{W} \times \mathbf{L}$

测试集 1(6 分,结果可见)

  • 1N101 \leq \mathbf{N} \leq 10

测试集 2(15 分,结果隐藏)

  • 1N1031 \leq \mathbf{N} \leq 10^3
  • 所有测试用例的圆总数不超过 6000

翻译由 ChatGPT-4.1 完成。