#P13453. [GCJ 2009 Finals] Lights

    ID: 13263 远端评测题 5000~30000ms 1024MiB 尝试: 0 已通过: 0 难度: 9 上传者: 标签>计算几何2009Special JudgeGoogle Code Jam

[GCJ 2009 Finals] Lights

Description

在一个大的正方形房间里,有两个点光源:一个是红色的,另一个是绿色的。房间里还有 nn 根圆柱形立柱。

光线沿直线传播,并会被墙壁和立柱吸收。因此,立柱会产生阴影:它们不会让光线穿透。在房间的某些区域,光线无法到达(黑色);有些区域只有一个光源能够照射到(红色或绿色);还有一些区域两个光源的光线都能照到(黄色)。请你计算房间内每种颜色区域的总面积。不要计算立柱本身的面积。

Input Format

  • 第一行包含一个整数 TT,表示测试用例的数量。

每个测试用例依次包含:

  • 一行,包含红色光源的坐标 xxyy
  • 一行,包含绿色光源的坐标 xxyy
  • 一行,包含立柱的数量 nn
  • 接下来 nn 行,每行包含三个数 xxyyrr,表示一个立柱的圆心坐标为 (x,y)(x, y),半径为 rr

房间是一个满足 0x,y1000 \leq x, y \leq 100 的正方形。立柱、房间的墙壁和光源都是互不相交、互不接触的。

Output Format

对于每个测试用例,输出:

Case #X:
black area
red area
green area
yellow area

其中 XX 是测试编号(从 1 开始),每个面积为一个实数。

只要你的答案的绝对误差或相对误差不超过 10510^{-5},即可被接受。

1
5 50
95 50
1
50 50 10
Case #1:
0.7656121
1437.986
1437.986
6809.104

Hint

限制条件

  • 所有输入数据均为整数。
  • 1T151 \leq T \leq 15
  • 0x,y1000 \leq x, y \leq 100
  • 1r491 \leq r \leq 49

小数据集(21 分)

  • 时间限制:5 秒
  • 0n10 \leq n \leq 1

大数据集(45 分)

  • 时间限制:30 秒
  • 0n500 \leq n \leq 50

翻译由 ChatGPT-4.1 完成。