QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#14946. 충돌 피해

Statistics

2D 물리 기반 비디오 게임에서 두 캐릭터 $P$와 $Q$가 전장을 가로질러 이동합니다. 각 캐릭터는 충돌 박스(히트박스) 역할을 하는 볼록 다각형으로 표현됩니다. 두 충돌 박스가 겹치면 게임은 교집합의 넓이를 충돌 피해로 계산합니다.

하지만 경기장 내의 예측할 수 없는 바람 때문에 캐릭터 $Q$는 임의의 평행이동 벡터 $\mathbf{t} = (t_x, t_y)$만큼 변위될 수 있으며, 회전하거나 뒤집힐 수는 없습니다. $Q$가 실제로 $P$와 충돌하도록(즉, 교집합의 넓이가 양수가 되도록) 균등하고 무작위하게 배치되었을 때의 기대 충돌 피해를 계산해야 합니다.

더 엄밀하게는, 캐릭터 $P$를 나타내는 다각형과 벡터 $\mathbf{t}$를 따라 평행이동된 후의 캐릭터 $Q$를 나타내는 다각형의 교집합의 넓이를 $f(\mathbf{t})$로 정의합니다. $f(\mathbf{t}) > 0$을 만족하는 모든 평행이동 벡터 $\mathbf{t}$의 집합을 $D \subseteq \mathbb{R}^2$라고 합시다. $D$는 양의 넓이를 가짐을 보일 수 있으며, 이를 $|D|$로 표기합니다. 여러분은 $\frac{1}{|D|} \iint_D f(\mathbf{t})\,d\mathbf{t}$를 계산해야 합니다.

입력

입력의 첫 번째 줄에는 테스트 케이스의 수를 나타내는 정수 $T$ ($1 \le T \le 300$)가 주어집니다. 각 테스트 케이스에 대하여:

  • 첫 번째 줄에는 두 볼록 다각형의 꼭짓점 개수를 각각 나타내는 두 정수 $n$과 $m$ ($3 \le n, m \le 1\,000$)이 주어집니다.
  • 다음 $n$개의 줄에는 각각 두 정수 $x$와 $y$ ($-10^4 \le x, y \le 10^4$)가 주어지며, 이는 캐릭터 $P$를 나타내는 다각형의 꼭짓점 좌표 $(x, y)$를 나타냅니다.
  • 그다음 $m$개의 줄에는 각각 두 정수 $x$와 $y$ ($-10^4 \le x, y \le 10^4$)가 주어지며, 이는 캐릭터 $Q$를 나타내는 다각형의 꼭짓점 좌표 $(x, y)$를 나타냅니다.
  • 볼록 다각형의 꼭짓점들은 반시계 방향 순서로 주어지며, 어느 세 꼭짓점도 한 직선 위에 있지 않음이 보장됩니다.

모든 테스트 케이스에 걸친 $n$의 합과 $m$의 합은 모두 $1\,000$을 초과하지 않음이 보장됩니다.

출력

각 테스트 케이스마다 기대 충돌 피해를 나타내는 실수를 한 줄에 출력합니다.

절대 오차 또는 상대 오차가 $10^{-6}$ 이하이면 정답으로 인정됩니다. 엄밀히 말해, 여러분의 출력을 $a$, 심판진의 답을 $b$라고 할 때, $\frac{|a - b|}{\max(1, |b|)} \le 10^{-6}$일 때 그리고 그때에만 정답으로 인정됩니다.

예제

입력 1

2
3 3
0 0
1 0
0 1
0 0
1 0
0 1
3 3
0 0
1 0
0 1
0 1
1 0
1 1

출력 1

0.083333333333
0.125000000000

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.