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

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

Balanced Subsets

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

요약
N×N 격자에서 각 행과 열이 부분집합과 만나는 칸이 하나의 연속 구간이 되는 연결된 잔디 칸 부분집합의 개수를 10^9+7로 나눈 나머지로 센다.
난이도

어려움10점 중 8점

유형
동적 계획법, 구현, 행렬, 조합론
정답자
아직 제출이 없습니다

문제

Farmer John의 목초지는 1≤i≤N1\le i\le N, 1≤j≤N1\le j\le N인 순서쌍 (i,j)(i,j)로 번호가 붙은 정사각형 칸들로 이루어진 거대한 2차원 격자이다 (1≤N≤1501\le N\le 150). 이 중 일부 칸에는 풀이 있다.

격자 칸의 공집합이 아닌 부분집합이 다음 조건을 만족하면 "balanced"라고 한다:

  1. 부분집합의 모든 칸에는 풀이 있다.
  2. 부분집합은 4-connected이다. 즉, 부분집합의 임의의 두 칸 사이에 경로가 존재하며, 경로의 연속한 두 칸은 가로 또는 세로로 인접한다.
  3. 칸 (x1,y)(x_1,y)와 (x2,y)(x_2,y) (x1≤x2x_1\le x_2)가 부분집합에 속하면, x1≤x≤x2x_1\le x\le x_2인 모든 칸 (x,y)(x,y)도 부분집합에 속한다.
  4. 칸 (x,y1)(x,y_1)과 (x,y2)(x,y_2) (y1≤y2y_1\le y_2)가 부분집합에 속하면, y1≤y≤y2y_1\le y\le y_2인 모든 칸 (x,y)(x,y)도 부분집합에 속한다.

balanced 부분집합의 개수를 109+710^9+7로 나눈 나머지를 구하라.

입력

첫 줄에 NN이 주어진다.

다음 NN개의 줄에는 각각 길이 NN의 문자열이 주어진다. 위에서 ii번째 줄의 jj번째 문자는 (i,j)(i,j) 칸에 풀이 있으면 G, 없으면 .이다.

출력

balanced 부분집합의 개수를 109+710^9+7로 나눈 나머지를 출력한다.

예제2

  1. 예제 1

    입력
    2
    GG
    GG
    
    예상 출력
    13
    
  2. 예제 2

    입력
    4
    GGGG
    GGGG
    GG.G
    GGGG
    
    예상 출력
    642