#P2159. 「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 列(1≤i,j≤N1 \le i, j \le N)的格子记作 (i,j)(i, j)。

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

一个安装在 (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))洒水。

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

请你帮助 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

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

数据范围与提示

对于所有数据,1≤N≤20001 \le N \le 2000。

对于测试点 3∼43 \sim 4,满足 N≤10N \le 10 且最多有 1010 个未被占据的格子。
对于测试点 5∼95 \sim 9,满足 N≤200N \le 200。
对于测试点 10∼1610 \sim 16,无特殊限制。

出题人:Benjamin Qi