QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 256 MB Total points: 100

#13190. 神圣稻草人

Statistics

Nerissa 拥有一块矩形的稻田,被划分为 $R \times C$ 个大小相同的小方格($R$ 行 $C$ 列)。每个方格要么是空地(可以用于任何目的),要么是已种植水稻的土地。

为了防止乌鸦或麻雀等鸟类破坏庄稼,Nerissa 决定在田里放置一些稻草人。每个稻草人只能放置在空地上。此外,为了防止其他人偷窃庄稼,稻草人的摆放必须是“神圣的”。如果一个摆放方案满足以下所有条件,则称其为神圣的:

  • 每一行至少包含一个稻草人。
  • 每相邻的两列至少包含一个稻草人。

现在 Nerissa 想知道,有多少种不同的神圣摆放方案?如果一个方案中某个方格放置了稻草人,而另一个方案中该方格没有放置稻草人,则这两个方案被视为不同。请帮助 Nerissa 计算这个数量。

输入格式

第一行包含两个整数:$R$ 和 $C$ ($1 \le R \le 14; 1 \le C \le 1000$),表示稻田的尺寸(行数和列数)。接下来的 $R$ 行给出了稻田的情况,每行包含一个长度为 $C$ 的字符串。每个方格用 '.' 表示空地,用 'v' 表示已种植水稻的土地。

输出格式

输出一行,包含一个整数,表示不同的神圣摆放方案数量。由于输出可能非常大,请将结果对 $1,000,000,007$ 取模。

样例

样例输入 1

2 2
v.
..

样例输出 1

3

样例输入 2

1 3
...

样例输出 2

5

样例输入 3

2 3
vvv
...

样例输出 3

0

样例输入 4

3 3
...
.v.
...

样例输出 4

145

样例输入 5

2 4
.vv.
.v.v

样例输出 5

5

说明

样例 2 的说明

对于第二个样例,以下是全部 5 种神圣摆放方案(稻草人用字符 '' 表示): `**`*.* **. .** .*.

样例 3 的说明

注意,对于第三个样例,我们无法在第一行放置任何稻草人。由于神圣摆放方案要求每一行至少有一个稻草人,因此在这种情况下,不存在神圣摆放方案。

样例 5 的说明

对于第五个样例,以下是全部 5 种神圣摆放方案(稻草人用字符 '' 表示): `vv vv vv.`*vv. .vv* *v*v .v*v .v*v *v*v *v*v

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.