#P16700. [ICPC 2017 Jakarta R]Sacred Scarecrows
[ICPC 2017 Jakarta R]Sacred Scarecrows
题目描述
Nerissa 拥有一块矩形稻田,被划分成 行、 列的等大方格。
每个方格属于以下两种类型之一:
- 空地:用字符
.表示,可以放置稻草人; - 已种植水稻的土地:用字符
v表示,不能放置稻草人。
为了防止乌鸦和麻雀破坏庄稼,Nerissa 决定在若干空地上放置稻草人。
为了同时防止其他人偷取庄稼,稻草人的排列必须是神圣的。
一种排列被称为神圣排列,当且仅当满足:
- 每一行至少包含一个稻草人;
- 任意相邻的两列中,至少有一个稻草人。
第二个条件是指,对每个:
第 列和第 列中的稻草人总数至少为 。
两种排列不同,当且仅当存在某个方格,在一种排列中放置了稻草人,而在另一种排列中没有。
请计算神圣排列的数量。
输入格式
第一行包含两个整数 :
接下来 行,每行包含一个长度为 的字符串,描述稻田:
.表示空地;v表示种植水稻的土地。
输出格式
输出一个整数,表示神圣排列的数量。
答案可能很大,请对:
取模后输出。
样例 1
输入
2 2
v.
..
输出
3
样例 2
输入
1 3
...
输出
5
样例 3
输入
2 3
vvv
...
输出
0
样例 4
输入
3 3
...
.v.
...
输出
145
样例 5
输入
2 4
.vv.
.v.v
输出
5