QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 256 MB Points totaux : 100

#3233. 一切都变了

Statistiques

Edward 是 Aluminum Cyclic Machinery 的一名工人。他的工作是操作机械臂切割出设计的模型。以下是对他工作的简要介绍。

假设操作平面为一个二维坐标系。起初,有一个圆心坐标为 $(0, 0)$ 且半径为 $R$ 的圆盘。随后,有 $m$ 个机械臂同时切割并擦除其影响范围内的所有区域,其中第 $i$ 个影响区域是一个圆心坐标为 $(x_i, y_i)$ 且半径为 $r_i$ 的圆($i = 1, 2, \dots, m$)。为了获得理想的模型,题目保证任意两个切割区域之间没有交集,且没有任何切割区域包含整个圆盘。

你的任务是确定圆盘剩余区域的周长,不包括内部周长。

下图为样例的示意图,其中红色曲线被计入周长,而绿色曲线则不计入。

输入格式

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

接下来描述所有测试用例。对于每个测试用例:

第一行包含两个整数 $m$ 和 $R$。

接下来的 $m$ 行中,第 $i$ 行包含三个整数 $x_i, y_i$ 和 $r_i$,表示一个切割区域。

$1 \le T \le 1000, 1 \le m \le 100, -1000 \le x_i, y_i \le 1000, 1 \le R, r_i \le 1000$ ($i = 1, 2, \dots, m$)。

输出格式

对于每个测试用例,输出一行,表示剩余区域的周长。如果你的答案的绝对误差或相对误差不超过 $10^{-6}$,则被视为正确。

形式化地,设你的答案为 $a$,标准答案为 $b$。如果满足 $\frac{|a-b|}{\max(1,|b|)} \le 10^{-6}$,则你的答案被视为正确。

样例

输入 1

1
4 10
6 3 5
10 -4 3
-2 -4 4
0 9 1

输出 1

81.62198908430238475376

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.