QOJ.ac

QOJ

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

#14946. Obrażenia od zderzenia

Statistics

W dwuwymiarowej grze wideo opartej na fizyce dwie postacie $P$ i $Q$ poruszają się po polu bitwy. Każda postać jest reprezentowana przez wielokąt wypukły, który służy jako jej obszar kolizji (collision box). Gdy dwa obszary kolizji nakładają się na siebie, gra oblicza pole ich części wspólnej jako obrażenia od zderzenia.

Jednak z powodu nieprzewidywalnych prądów powietrznych na arenie postać $Q$ może zostać przesunięta o dowolny wektor translacji $\mathbf{t} = (t_x, t_y)$, ale nie może się obracać ani odbijać lustrzanie. Musisz obliczyć wartość oczekiwaną obrażeń od zderzenia, gdy postać $Q$ zostanie umieszczona losowo z rozkładem jednostajnym w taki sposób, że faktycznie zderzy się z $P$, tzn. ich część wspólna ma dodatnie pole.

Bardziej formalnie, zdefiniujmy $f(\mathbf{t})$ jako pole części wspólnej wielokąta reprezentującego postać $P$ oraz wielokąta reprezentującego postać $Q$ po przesunięciu o wektor $\mathbf{t}$. Niech $D \subseteq \mathbb{R}^2$ będzie zbiorem wszystkich wektorów translacji $\mathbf{t}$, dla których $f(\mathbf{t}) > 0$. Można wykazać, że zbiór $D$ ma dodatnie pole, oznaczane przez $|D|$. Musisz obliczyć $\frac{1}{|D|} \iint_D f(\mathbf{t})\,d\mathbf{t}$.

Wejście

Pierwszy wiersz wejścia zawiera liczbę całkowitą $T$ ($1 \le T \le 300$), oznaczającą liczbę przypadków testowych. Dla każdego przypadku testowego:

  • Pierwszy wiersz zawiera dwie liczby całkowite $n$ oraz $m$ ($3 \le n, m \le 1\,000$), oznaczające odpowiednio liczby wierzchołków obu wielokątów wypukłych.
  • Następnie podanych jest $n$ wierszy, z których każdy zawiera dwie liczby całkowite $x$ i $y$ ($-10^4 \le x, y \le 10^4$), określające współrzędne wierzchołków $(x, y)$ wielokąta reprezentującego postać $P$.
  • Następnie podanych jest $m$ wierszy, z których każdy zawiera dwie liczby całkowite $x$ i $y$ ($-10^4 \le x, y \le 10^4$), określające współrzędne wierzchołków $(x, y)$ wielokąta reprezentującego postać $Q$.
  • Gwarantuje się, że wierzchołki wielokąta wypukłego są podane w kolejności przeciwnie do ruchu wskazówek zegara oraz że żadne trzy z nich nie są współliniowe.

Gwarantuje się, że zarówno suma $n$, jak i suma $m$ po wszystkich przypadkach testowych nie przekraczają $1\,000$.

Wyjście

Dla każdego przypadku testowego wypisz jeden wiersz zawierający liczbę rzeczywistą reprezentującą oczekiwaną wartość obrażeń od zderzenia.

Twoja odpowiedź zostanie zaakceptowana, jeśli jej błąd bezwzględny lub względny nie przekroczy $10^{-6}$. Formalnie, zakładając, że Twoje wyjście to $a$, a odpowiedź jury to $b$, Twoje wyjście zostanie zaakceptowane wtedy i tylko wtedy, gdy $\frac{|a - b|}{\max(1, |b|)} \le 10^{-6}$.

Przykłady

Wejście 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

Wyjście 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.