만드는 중입니다

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

찌름 수

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

요약
ASCII 그림으로 주어진 히스토그램을 직사각형으로 나눌 때, 어떤 선분이든 내부를 지나는 직사각형 수의 최댓값을 최소로 하는 분할을 구합니다.
난이도

어려움10점 중 9점

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

문제

히스토그램은 단순 직교 다각형 HH이며, 각 꼭짓점의 내각은 90∘90^\circ 또는 270∘270^\circ이다. HH에는 내부와 경계를 모두 포함한 HH 안의 모든 점 qq를 볼 수 있는 수평 변이 있다. 변 ee가 점 q∈Hq \in H를 볼 수 있다는 것은, ee와 qq를 잇고 HH 내부에 놓인 수직 선분 ss가 존재한다는 뜻이다.

nn개의 꼭짓점을 가진 히스토그램 HH와, 변이 수직 또는 수평인 직사각형들로 HH를 나눈 분할 RR을 생각하자. 직사각형의 꼭짓점이 모두 HH의 꼭짓점일 필요는 없다. HH의 경계 위나 내부에 꼭짓점을 추가해도 된다.

HH 내부에 놓인 수평 또는 수직 선분 ss의 찌름 수는, ss가 내부(경계만이 아닌)를 지나는 RR의 직사각형 개수이다. RR의 찌름 수는 HH 내부에 놓인 모든 수평 또는 수직 선분 ss의 찌름 수 중 최댓값이다. 찌름 수가 가장 작은 분할 RR을 구하는 것이 목표이다.

입력

첫 줄에는 두 양의 정수 mm과 nn (1≤m,n≤501 \le m, n \le 50)이 주어지며, 이는 히스토그램을 나타내는 표의 행 수와 열 수이다. 다음 mm개의 줄에는 각각 정확히 nn개의 문자가 주어진다. *는 히스토그램의 경계를 나타내고, 나머지 칸은 .으로 채워져 있다. 히스토그램의 각 변에는 *가 적어도 세 개 있다. 변은 4개 이상 16개 이하이며, 어떤 두 변도 겹치거나 교차하거나 닿지 않는다. 즉 각 *는 정확히 다른 두 *와 인접한다.

출력

주어진 히스토그램의 찌름 수를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    10 13
    .....****....
    .....*..*....
    .....*..***..
    .....*....*..
    .....*....***
    ...***......*
    ...*........*
    ****........*
    *...........*
    *************
    
    예상 출력
    2
    
  2. 예제 2

    입력
    8 15
    ...............
    .........*****.
    ....***..*...*.
    ....*.*..*...*.
    .****.****...*.
    .*...........*.
    .*************.
    ...............
    
    예상 출력
    2