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

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

타일 배치

시간 제한1초메모리 제한1024 MB

요약
높이가 같은 볼록 타일 14개 이하가 주어질 때, 잘린 모서리를 고려해 겹치지 않게 나란히 배치했을 때 필요한 프레임의 최소 너비를 구한다.
난이도

어려움10점 중 9점

유형
동적 계획법, 기하, 그리디, 완전 탐색
정답자
아직 제출이 없습니다

문제

높이가 모두 HH로 같은 직사각형 돌 타일이 있다. 각 타일은 원래의 네 모서리를 서로 다른 방식으로 잘라 냈지만, 다음 두 성질은 그대로 남아 있다.

  1. 자른 뒤에도 타일은 단순 볼록 다각형이다.
  2. 각 타일에는 원래 직사각형의 아랫변과 윗변의 일부인 평행한 두 변이 남아 있다. 따라서 높이 HH는 변하지 않는다.

아래 그림은 타일 두 개를 자르기 전과 자른 뒤의 모습이다. 꼭짓점은 작은 원으로 표시했다.

타일을 자르기 전과 후

타일을 모두 운반하려면 높이가 HH인 틀에 겹치지 않게 나란히 놓아야 한다. 타일은 평행이동만 할 수 있고, 회전하거나 뒤집을 수는 없다. 볼록한 모양이 서로 많이 다르므로 틀을 따라 놓는 순서에 따라 필요한 폭이 달라진다. 다음 그림은 앞 그림의 두 타일을 놓는 두 가지 순서다. 두 번째 순서가 틀의 폭을 더 줄인다.

두 가지 배치 순서

타일의 정보가 주어지면, 모든 타일을 겹치지 않게 나란히 담는 높이 HH짜리 틀의 최소 폭을 구하라.

입력

첫 줄에 타일의 개수 NN (1≤N≤141 \le N \le 14)이 주어진다. 이어서 타일 하나를 설명하는 줄 묶음이 NN개 주어지며, 모든 타일의 높이는 같다.

각 묶음의 첫 줄에는 타일의 꼭짓점 개수 KK (4≤K≤1044 \le K \le 10^4)가 주어진다. 이어지는 KK개의 줄에는 꼭짓점 하나의 좌표를 나타내는 두 정수 XX (−108≤X≤108-10^8 \le X \le 10^8)와 YY (0≤Y≤1080 \le Y \le 10^8)가 주어진다. 꼭짓점은 반시계 방향으로 주어진다. 첫 번째 꼭짓점은 (0,0)(0, 0)이고 두 번째 꼭짓점은 X>0X > 0인 (X,0)(X, 0) 꼴이며, 이 변이 타일의 아랫변이다. 타일은 아랫변과 평행한 윗변이 있는 단순 볼록 다각형이다.

출력

모든 타일을 겹치지 않게 나란히 담는, 타일과 높이가 같은 틀의 최소 폭을 한 줄에 출력한다. 소수점 아래 정확히 세 자리까지 출력하고, 필요하면 반올림한다.

예제2

  1. 예제 1

    입력
    3
    4
    0 0
    1 0
    0 5
    -1 5
    4
    0 0
    1 0
    2 5
    1 5
    4
    0 0
    3 0
    2 5
    1 5
    
    예상 출력
    5.000
    
  2. 예제 2

    입력
    3
    4
    0 0
    204 0
    412 1031
    -253 1031
    6
    0 0
    110 0
    290 436
    100 1031
    0 1031
    -400 750
    5
    0 0
    120 0
    100 1031
    0 1031
    -281 93
    
    예상 출력
    1420.754