#P51291. 「USACO2020 US Open Platinum」Sprinklers2:Return of the Alfalfa

「USACO2020 US Open Platinum」Sprinklers2:Return of the Alfalfa

题目描述

题目译自 USACO 2020 US Open Contest, Platinum Problem 1. Sprinklers 2: Return of the Alfalfa

Farmer John 有一块大小为 N×NN \times N 的网格形土地,将从上到下第 ii 行、从左到右第 jj 列(1i,jN1 \le i, j \le N)的格子记作 (i,j)(i, j)

他想要在这片土地上种植甜玉米和紫苜蓿(mù xu),所以他需要安装一些特别的洒水器。

一个安装在 (I,J)(I, J) 的甜玉米洒水器会为所有在左下角方向的格子(也就是所有满足 IiI \le ijJj \le J 的格子 (i,j)(i, j))洒水。

一个安装在 (I,J)(I, J) 的紫苜蓿洒水器会为所有在右上角方向的格子(也就是所有满足 iIi \le IJjJ \le j 的格子 (i,j)(i, j))洒水。

如果一个格子被一个或多个甜玉米洒水器喷洒到,那么它就能够种植甜玉米;如果一个格子被一个或多个紫苜蓿洒水器喷洒到,那么它就能够种植紫苜蓿。但是如果一个格子被两种洒水器都喷洒到了(或都没喷洒到),那么它就什么都种不了。

请你帮助 FJ 计算安装洒水器的方案数(对 109+7{10}^9 + 7 取模),满足每个格子最多安装一个洒水器,且每个格子都能种植(也就是说,每个格子恰好被一种洒水器喷洒到)。

有些格子已经被毛乎乎的奶牛占据了,导致这些格子上不能放置洒水器,但不影响格子能否种植植物。

输入格式

从标准输入中读入数据。

第一行一个正整数 NN
接下来 NN 行,第 ii 行一个长度为 NN 的字符串,表示网格第 ii 行的状态。字符串中只包含 W. 两种字符,如果第 jj 个字符为 W 则表示 (i,j)(i, j) 被毛乎乎的奶牛占据了,否则表示没有被占据。

输出格式

输出到标准输出中。

输出安装洒水器的方案数,对 109+7{10}^9 + 7 取模。

样例 1

2
..
..
28

下列是甜玉米能种植在 (1,1)(1, 1)1414 种情况。

CC  .C  CA  CC  .C  CA  CA  C.  CA  C.  CC  .C  CC  .C
CC, CC, CC, .C, .C, .C, CA, CA, .A, .A, C., C., .., ..
4
..W.
..WW
WW..
...W
2304

此样例满足第一个子任务(见下)的限制。

数据范围与提示

对于所有数据,1N20001 \le N \le 2000

对于测试点 343 \sim 4,满足 N10N \le 10 且最多有 1010 个未被占据的格子。
对于测试点 595 \sim 9,满足 N200N \le 200
对于测试点 101610 \sim 16,无特殊限制。

出题人:Benjamin Qi