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

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

스프링클러 2: 알팔파의 귀환

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

요약
일부 칸이 막힌 N x N 격자에 옥수수 sprinkler와 alfalfa sprinkler를 놓아 모든 칸이 정확히 한 종류의 sprinkler로만 덮이도록 하는 경우의 수를 센다.
난이도

어려움10점 중 9점

유형
동적 계획법, 누적 합, 조합론, 수학
정답자
아직 제출이 없습니다

문제

농부 존은 N×NN \times N 격자 모양의 작은 밭을 가지고 있다 (1≤N≤20001 \le N \le 2000). 위에서 ii번째 행의 왼쪽에서 jj번째 칸을 (i,j)(i,j)로 나타낸다 (1≤i,j≤N1 \le i,j \le N). 그는 이 밭에 스위트콘과 알팔파를 심으려고 한다. 그러려면 특수한 스프링클러를 설치해야 한다.

(I,J)(I,J) 칸에 설치한 스위트콘 스프링클러는 왼쪽 아래 방향의 모든 칸, 즉 I≤iI \le i이고 j≤Jj \le J인 (i,j)(i,j)에 물을 뿌린다.

(I,J)(I,J) 칸에 설치한 알팔파 스프링클러는 오른쪽 위 방향의 모든 칸, 즉 i≤Ii \le I이고 J≤jJ \le j인 (i,j)(i,j)에 물을 뿌린다.

스위트콘 스프링클러가 하나 이상 물을 뿌린 칸에는 스위트콘을 기를 수 있고, 알팔파 스프링클러가 하나 이상 물을 뿌린 칸에는 알팔파를 기를 수 있다. 그러나 두 종류의 스프링클러가 모두 물을 뿌린 칸에서는 아무것도 기를 수 없고, 어느 쪽도 물을 뿌리지 않은 칸에서도 아무것도 기를 수 없다.

농부 존이 모든 칸이 비옥하게, 즉 정확히 한 종류의 스프링클러만 물을 뿌리도록 밭에 스프링클러를 설치하는 방법의 수를 109+710^9 + 7로 나눈 나머지를 구하라. 각 칸에는 스프링클러를 최대 하나만 설치할 수 있다.

일부 칸은 이미 털복숭이 소가 차지하고 있다. 이런 칸도 비옥해질 수 있지만, 스프링클러는 설치할 수 없다.

입력

첫째 줄에 정수 NN이 주어진다.

각 1≤i≤N1\le i\le N에 대해, i+1i+1번째 줄에 격자의 ii번째 행을 나타내는 길이 NN의 문자열이 주어진다. 문자열의 각 문자는 'W'(털복숭이 소가 차지한 칸) 또는 '.'(빈 칸)이다.

출력

스프링클러를 설치하는 방법의 수를 109+710^9+7로 나눈 나머지를 출력한다.

예제2

  1. 예제 1

    입력
    2
    ..
    ..
    
    예상 출력
    28
    
  2. 예제 2

    입력
    4
    ..W.
    ..WW
    WW..
    ...W
    
    예상 출력
    2304