아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

수줍은 다각형

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

요약
두 단순 폴리곤을 x축 방향으로만 평행이동시킬 수 있을 때, 모든 점 사이 거리가 L 이상이 되도록 배치하면서 전체 x축 폭을 최소화하는 값을 구합니다.
난이도

어려움10점 중 8점

유형
기하, 이분 탐색, 시뮬레이션
정답자
아직 제출이 없습니다

문제

xyxy 평면 위에 놓인, 속이 꽉 찬 두 개의 다각형과 그 위치가 주어진다. 두 다각형 중 하나를 xx축 방향으로만 평행이동할 수 있으며, 이동하는 도중에는 두 다각형이 서로 겹쳐도 된다. 다른 방향으로 옮기거나 회전시킬 수는 없다.

다음 조건을 지키면서 두 다각형을 최대한 촘촘하게 배치하려고 한다: 한 다각형 위의 임의의 점과 다른 다각형 위의 임의의 점 사이의 거리가 항상 주어진 값 LL 이상이어야 한다. 다각형은 속이 꽉 차 있으므로 "다각형 위의 점"은 경계뿐 아니라 내부의 점도 포함한다. 특히 두 다각형이 겹치면 둘 사이의 거리는 00이다.

어떤 배치의 너비는 두 다각형에 속한 모든 점의 xx좌표 가운데 최댓값과 최솟값의 차이다. 위 조건을 만족하는 모든 배치 중 가능한 최소 너비를 구하는 프로그램을 작성하라.

예를 들어 그림 13의 두 다각형을 L=10.0L = 10.0으로 배치하면 최소 너비는 100100이다. 그림 14는 그러한 최적 배치의 한 예이다.

그림 13: 두 다각형의 처음 위치

그림 14: 최적 배치의 한 예 (L=10.0L = 10.0)

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋의 형식은 다음과 같다.

L
다각형1
다각형2

LL은 두 다각형이 유지해야 하는 최소 거리를 나타내는 실수이며 0.1<L<50.00.1 < L < 50.0이다.

각 다각형은 다음 형식으로 주어진다.

n
x1 y1
x2 y2
...
xn yn

nn은 다각형의 꼭짓점 개수로 2<n<152 < n < 15이다. 이어지는 nn개의 줄에는 각 꼭짓점의 xx, yy 좌표가 공백 하나로 구분되어 주어지며, 두 좌표 모두 음이 아닌 정수이고 500500보다 작다.

다각형의 변은 인접한 두 꼭짓점을 잇고, 마지막 꼭짓점과 첫 번째 꼭짓점도 잇는다. 꼭짓점은 반시계 방향으로 주어지며, 모든 다각형은 단순하다(경계가 스스로 교차하거나 맞닿지 않는다).

답은 수치적으로 안정적이라고 가정해도 된다. 고정된 두 다각형에 대해 요구 거리 ll의 함수로서 최소 너비를 w(l)w(l)이라 하면 ∣w(L±10−7)−w(L)∣<10−4|w(L \pm 10^{-7}) - w(L)| < 10^{-4}이다.

입력의 끝은 00 하나만 있는 줄로 나타내며, 이 줄은 어떤 데이터셋에도 속하지 않는다.

출력

각 데이터셋에 대해 최소 너비를 소수점 아래 정확히 여섯 자리로 반올림하여 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    10.5235
    3
    0 0
    100 100
    0 100
    4
    0 50
    20 50
    20 80
    0 80
    10.0
    4
    120 45
    140 35
    140 65
    120 55
    8
    0 0
    100 0
    100 100
    0 100
    0 55
    80 90
    80 10
    0 45
    10.0
    3
    0 0
    1 0
    0 1
    3
    0 100
    1 101
    0 101
    10.0
    3
    0 0
    1 0
    0 100
    3
    0 50
    100 50
    0 51
    0
    
    예상 출력
    114.882476
    100.000000
    1.000000
    110.500500
    
  2. 예제 2

    입력
    5.0
    4
    0 0
    10 0
    10 10
    0 10
    4
    100 0
    110 0
    110 10
    100 10
    0
    
    예상 출력
    25.000000