만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

B 잘라내기

시간 제한2초메모리 제한512 MB

요약
볼록다각형 A 안에 볼록다각형 B가 완전히 들어 있을 때, B의 변을 잇는 직선으로 A를 잘라 B만 남기는 최소 절단 길이를 구합니다.
난이도

어려움10점 중 8점

유형
기하, 동적 계획법
정답자
아직 제출이 없습니다

문제

두 개의 볼록 다각형 AA와 BB가 주어진다. BB는 AA의 내부에 완전히 들어 있다고 보장된다.

BB를 AA에서 잘라내려고 한다. 한 번 자를 때마다 AA를 완전히 가로지르면서 BB의 변 하나를 따라 지나는 직선을 긋는다. 이 직선은 AA를 두 조각으로 나눈다. 직선을 따라 자른 뒤 BB를 포함하지 않는 조각을 버린다. 남은 조각이 정확히 BB가 될 때까지 이 과정을 반복한다.

한 번 자를 때 드는 비용은 자른 선의 길이다. 즉, 남아 있는 AA를 가로지르는 선분의 길이와 같다. AA와 BB가 주어졌을 때, BB를 잘라내는 데 드는 최소 비용을 구하라.

입력

첫 줄에 정수 aa (3≤a≤2003 \le a \le 200)가 주어진다. 이는 다각형 AA의 꼭짓점 개수이다. 이어지는 aa개의 줄에는 AA의 꼭짓점 좌표 xx, yy가 시계 방향 순서로 한 줄에 하나씩 주어진다. AA는 볼록 다각형이다.

다음 줄에는 정수 bb (3≤b≤2003 \le b \le 200)가 주어진다. 이는 다각형 BB의 꼭짓점 개수이다. 이어지는 bb개의 줄에는 BB의 꼭짓점 좌표 xx, yy가 시계 방향 순서로 주어진다. BB는 볼록 다각형이며, AA의 내부에 완전히 들어 있다고 보장된다. AA의 좌표는 −106≤x,y≤106-10^6 \le x, y \le 10^6을 만족하고, BB의 좌표는 −106<x,y<106-10^6 < x, y < 10^6을 만족한다.

한 다각형 안에서든 두 다각형에 걸쳐서든, 세 점이 한 직선 위에 놓이는 경우는 없다.

출력

BB를 AA에서 잘라내는 데 필요한 최소 비용을 실수 하나로 출력하라. 답은 심사위원의 답과 상대 오차가 10−610^{-6} 이내이면 정답으로 인정한다.

예제2

  1. 예제 1

    입력
    4
    0 0
    0 14
    15 14
    15 0
    4
    8 3
    4 6
    7 10
    11 7
    
    예상 출력
    40.0000000000
    
  2. 예제 2

    입력
    4
    -100 -100
    -100 100
    100 100
    100 -100
    8
    -1 -2
    -2 -1
    -2 1
    -1 2
    1 2
    2 1
    2 -1
    1 -2
    
    예상 출력
    322.1421356237