QOJ.ac

QOJ

実行時間制限: 8 s メモリ制限: 256 MB 満点: 100 ハック可能 ✓

#19989. 숨겨진 글리프

統計

Glyph Yuji는 여행하며 여러 나라에서 다양한 글리프를 발견하는 것을 좋아한다. 몇 년간 여행한 뒤 Glyph는 Lollipop과 Boomerang 두 나라에서 찾은 글리프들 사이에 유사점이 있음을 발견했다. 두 지역의 필기 체계는 매우 비슷하며, 손으로 쓰는 모든 글리프가 직각으로 이루어진 모양이다.

직각으로 이루어진 글리프는 2차원 유클리드 평면의 단순 다각형으로 모델링할 수 있으며, 다각형의 모든 변은 좌표축에 평행하거나 수직이다.

Lollipop과 Boomerang에서 쓰는 두 언어를 더 자세히 살펴본 Glyph는 다음을 관찰했다. (1) Lollipop의 글리프가 보통 Boomerang의 글리프보다 크다. (2) 각 언어에는 정확히 $n$개의 서로 다른 글리프가 있고, 두 언어 사이에 일대일 대응이 존재한다.

그러나 Glyph는 Lollipop 언어의 어떤 글리프가 Boomerang 언어의 어떤 글리프에 대응하는지 모른다. 이 대응을 알아보기 위해 Glyph는 먼저 각 글리프를 단순 다각형으로 표현한다.

problem_19989_827b1255428b6d226d13c698a02abd99.png

그림 1: Lollipop 나라의 글리프 (왼쪽), 이에 대응하는 Boomerang 나라의 글리프 (가운데), 가능한 평행 이동 영역 (오른쪽). (왼쪽 아래 모서리를 $(0,0)$으로 한다.)

정확히 말하면 영역 $B$와 점 $(x,y)$에 대해 Glyph는 $B+(x,y)$를 집합 $B+(x,y):=\{(b_x+x,b_y+y)\mid(b_x,b_y)\in B\}$로 정의한다. Lollipop의 글리프 $L$과 Boomerang의 글리프 $B$의 모든 쌍에 대해, Glyph는 “평행 이동 넓이” $\operatorname{tr}(L,B)$를 영역 $\operatorname{tr}(L,B):=\{(x,y)\mid B+(x,y)\subseteq L\}$의 넓이로 정의한다. 예는 그림 1을 보라.

Glyph Yuji는 두 언어의 실제 대응이 모든 대응 글리프 쌍의 평행 이동 넓이 합을 최대로 만든다고 믿는다. 이 정의에서는 한 쌍의 글리프의 평행 이동 넓이가 0일 수도 있다. Glyph가 이 값을 찾도록 도와줄 수 있는가?

입력

첫째 줄에는 테스트 케이스의 개수를 나타내는 정수 $T$가 주어진다.

각 테스트 케이스는 정수 $n$으로 시작하고, 이어서 $2n$개의 줄이 주어진다. 처음 $n$개 줄은 Lollipop 언어의 글리프를 나타내는 $n$개의 직각 모양을 설명하고, 다음 $n$개 줄은 Boomerang 언어의 글리프를 나타내는 $n$개의 직각 모양을 설명한다.

직각 모양을 설명하는 $i$번째 줄에는 정점 수를 나타내는 정수 $m_i$에 이어, 시계 방향 또는 반시계 방향으로 나열된 $m_i$쌍의 정수 좌표가 주어진다.

  • $1\le T\le4$

  • $1\le n\le30$

  • $4\le m_i\le200$

  • 모든 좌표 $(x,y)$에 대해 $0\le x,y\le1000$.

  • 모든 직각 모양은 유효하고 퇴화하지 않은 단순 다각형이다.

출력

각 테스트 케이스에 대해 대응 쌍들의 평행 이동 넓이 합의 최댓값을 나타내는 정수 하나만 포함하는 한 줄을 출력한다. 답은 반드시 정수임을 보일 수 있다.

예제

입력 1

2
1
10 0 0 0 10 2 10 2 12 6 12 6 8 2 8 2 4 6 4 6 0
8 0 0 0 3 2 3 2 2 1 2 1 1 2 1 2 0
2
5 0 0 0 2 0 5 5 5 5 0
4 0 0 3 0 3 6 0 6
4 0 0 1 0 1 2 0 2
4 0 0 0 1 2 1 2 0

출력 1

6
20

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.