신성한 허수아비
시간 제한2초메모리 제한512 MB
R x C 격자의 빈 칸 부분집합 가운데 각 행에 허수아비가 하나 이상 있고 이웃한 두 열마다 허수아비가 하나 이상 있는 경우의 수를 1e9+7로 나눈 나머지로 구한다.
문제
Nerissa는 크기의 직사각형 논을 가지고 있다. 논은 크기가 같은 작은 정사각형 칸 행 열로 나뉜다. 각 칸은 빈 흙(어떤 용도로도 쓸 수 있는 빈 칸) 또는 벼가 심긴 흙이다.
새나 참새 같은 새가 작물을 해치지 못하도록 Nerissa는 논에 허수아비를 세우기로 했다. 허수아비는 빈 칸에만 놓을 수 있다. 또한 다른 사람이 작물을 훔치지 못하도록 허수아비 배치는 신성해야 한다. 배치가 신성하다는 것은 다음 조건을 모두 만족한다는 뜻이다:
- 각 행에 허수아비가 최소 하나 있다.
- 연속한 두 열마다 허수아비가 최소 하나 있다.
신성한 배치는 서로 몇 가지인가? 한 배치에만 허수아비가 있는 칸이 있으면 두 배치는 서로 다르다. 이 개수를 구하라.
입력
첫째 줄에 논 크기를 나타내는 두 정수 (, )가 주어진다. 다음 줄에 논 상태가 주어진다. 각 줄은 길이가 인 문자열이다. 각 칸은 빈 흙을 뜻하는 . 또는 벼가 심긴 흙을 뜻하는 v로 표시된다.
출력
서로 다른 신성한 배치의 개수를 한 줄에 출력한다. 출력이 매우 클 수 있으므로 로 나눈 나머지를 출력한다.
힌트
두 번째 샘플에서는 가능한 배치가 5가지이다. 한 행에 놓을 수 있는 위치가 세 칸이므로 비어 있지 않은 부분집합 중에서 양쪽 이웃 열 쌍을 모두 덮는 경우가 5가지가 된다.
세 번째 샘플에서는 첫 행에 허수아비를 놓을 칸이 없다. 각 행에 최소 하나가 있어야 하므로 가능한 배치가 없다.
다섯 번째 샘플에서도 가능한 배치가 5가지이다. 두 행의 빈 칸 위치가 서로 어긋나 있어 행 조건과 열 쌍 조건을 함께 만족하는 경우가 5가지로 제한된다.