AT_hhkb2020_e.Lamps
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一个由 H 行 W 列组成的网格,每个格子要么是“散乱的”,要么是“未散乱的”。
现在你可以在 0 个或更多未散乱的格子上放置照明灯。
每个照明灯会照亮其所在格子,以及从该格子向上下左右四个方向,直到遇到网格边界或第一个“散乱的”格子为止(“散乱的”格子不会被照亮)。照明灯所在的格子也会被照亮。
给定整数 H, W 和 H 个长度为 W 的字符串 Si。当 Si 的第 j 个字符为 . 时,第 i 行第 j 列的格子是未散乱的;当 Si 的第 j 个字符为 # 时,第 i 行第 j 列的格子是散乱的。
假设未散乱的格子的总数为 K,则照明灯的放置方法共有 2K 种。对于这 2K 种放置方法中的每一种,计算被至少一个照明灯照亮的格子的数量,并将所有方案的总和对 1,000,000,007 取模后输出。
输入格式
输入按以下格式从标准输入给出。
H W
S1
S2
⋮
SH
输出格式
对于所有 2K 种放置方法,计算每种情况下被至少一个照明灯照亮的格子的数量之和,并输出其对 1,000,000,007 取模的结果。
输入输出样例
输入#1
1 5 ..#..
输出#1
48
输入#2
2 3 ..# #..
输出#2
52
说明/提示
限制条件
- 1≤H≤2000
- 1≤W≤2000
- Si 是仅由
.和#组成的长度为 W 的字符串
样例解释 1
一共有 16 种放置照明灯的方法。
- 其中 9 种(左起第 1 或第 2 个至少有一个放了灯,且左起第 4 或第 5 个至少有一个放了灯)会照亮 4 个格子。
- 其中 3 种(左起第 1 或第 2 个至少有一个放了灯,且左起第 4 和第 5 个都没有放灯)会照亮 2 个格子。
- 其中 3 种(左起第 4 或第 5 个至少有一个放了灯,且左起第 1 和第 2 个都没有放灯)会照亮 2 个格子。
- 其中 1 种(一个灯也没放)会照亮 0 个格子。
所以答案为 4×9+2×3+2×3+0×1=48。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?