타일 배치

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

어려움9동적 계획법기하그리디완전 탐색아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

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

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

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

타일을 자르기 전과 후

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

두 가지 배치 순서

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

입력

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

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

출력

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