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

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

창 그리기

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

요약
구멍 없는 직교 다각형의 경계가 주어질 때, 다각형을 정확히 분할하는 겹치지 않는 축 정렬 직사각형의 최소 개수를 구한다.
난이도

보통10점 중 7점

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

문제

Andrew는 텍스트 모드 창 인터페이스를 사용하는 메일 프로그램을 새 운영체제로 이식하고 있다. 이 프로그램은 예전의 Norton 스타일 셸처럼 화면 버퍼에 문자를 써서 인터페이스를 그린다.

그런데 이 새 운영체제에서는 화면 버퍼에 접근하는 호출 하나하나가 매우 느리다. 문자 하나를 쓰는 데 1/60001/6000초 이상이 걸리므로, 창을 문자 하나씩 다시 그리면 참을 수 없을 만큼 느리다.

속도를 높이기 위해 Andrew는 축에 나란한 직사각형 영역 전체를 한 번의 호출로 채우는 시스템 함수를 사용하려 한다. 그러면 창을 다시 그리는 일은 창의 보이는 영역을 가능한 한 적은 수의, 서로 겹치지 않는 직사각형으로 덮는 문제가 된다.

창의 보이는 부분이 직교 다각형(모든 변이 수평 또는 수직인 다각형)으로 주어진다. 이 영역을 정확히 덮는(합집합이 영역과 같고 서로 겹치지 않는) 축에 나란한 직사각형의 최소 개수를 구하여라.

입력

보이는 영역은 그 경계로 주어지며, 경계는 정수 좌표를 갖는 수평 선분과 수직 선분으로만 이루어진다. 영역에는 구멍이 없고, 경계는 자기 자신과 닿거나 교차하지 않는다. 각 선분의 길이는 최소 1 이상이다.

첫째 줄에 경계의 꼭짓점 개수 nn이 주어진다. 이어지는 nn개의 줄에는 각 꼭짓점의 좌표가 반시계 방향으로 주어진다(화면에서 yy축은 아래로 향한다). 수평 선분과 수직 선분이 번갈아 나타나며, 마지막 선분은 마지막 꼭짓점과 첫 꼭짓점을 잇는다.

n≤400n \le 400이고, 모든 좌표의 절댓값은 200200 이하이다.

출력

보이는 영역을 서로 겹치지 않는 축에 나란한 직사각형들로 정확히 분할할 때 필요한 직사각형의 최소 개수 mm을 정수 하나로 출력한다.

예제4

  1. 예제 1

    입력
    4
    0 0
    0 1
    1 1
    1 0
    
    예상 출력
    1
    
  2. 예제 2

    입력
    8
    0 0
    0 1
    1 1
    1 2
    2 2
    2 -1
    1 -1
    1 0
    
    예상 출력
    2
    
  3. 예제 3

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

    입력
    12
    0 0
    0 3
    1 3
    1 2
    3 2
    3 3
    4 3
    4 0
    3 0
    3 1
    1 1
    1 0
    
    예상 출력
    3