AT_hhkb2020_e.Lamps

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一个由 HH 行 WW 列组成的网格,每个格子要么是“散乱的”,要么是“未散乱的”。

现在你可以在 00 个或更多未散乱的格子上放置照明灯。

每个照明灯会照亮其所在格子,以及从该格子向上下左右四个方向,直到遇到网格边界或第一个“散乱的”格子为止(“散乱的”格子不会被照亮)。照明灯所在的格子也会被照亮。

给定整数 H, WH,\ W 和 HH 个长度为 WW 的字符串 SiS_i。当 SiS_i 的第 jj 个字符为 . 时,第 ii 行第 jj 列的格子是未散乱的;当 SiS_i 的第 jj 个字符为 # 时,第 ii 行第 jj 列的格子是散乱的。

假设未散乱的格子的总数为 KK,则照明灯的放置方法共有 2K2^K 种。对于这 2K2^K 种放置方法中的每一种,计算被至少一个照明灯照亮的格子的数量,并将所有方案的总和对 1,000,000,0071,000,000,007 取模后输出。

输入格式

输入按以下格式从标准输入给出。

HH WW
S1S_1
S2S_2
⋮\vdots
SHS_H

输出格式

对于所有 2K2^K 种放置方法,计算每种情况下被至少一个照明灯照亮的格子的数量之和,并输出其对 1,000,000,0071,000,000,007 取模的结果。

输入输出样例

  • 输入#1

    1 5
    ..#..

    输出#1

    48
  • 输入#2

    2 3
    ..#
    #..

    输出#2

    52

说明/提示

限制条件

  • 1≤H≤20001 \leq H \leq 2000
  • 1≤W≤20001 \leq W \leq 2000
  • SiS_i 是仅由 . 和 # 组成的长度为 WW 的字符串

样例解释 1

一共有 1616 种放置照明灯的方法。

  • 其中 99 种(左起第 11 或第 22 个至少有一个放了灯,且左起第 44 或第 55 个至少有一个放了灯)会照亮 44 个格子。
  • 其中 33 种(左起第 11 或第 22 个至少有一个放了灯,且左起第 44 和第 55 个都没有放灯)会照亮 22 个格子。
  • 其中 33 种(左起第 44 或第 55 个至少有一个放了灯,且左起第 11 和第 22 个都没有放灯)会照亮 22 个格子。
  • 其中 11 种(一个灯也没放)会照亮 00 个格子。
    所以答案为 4×9+2×3+2×3+0×1=484 \times 9 + 2 \times 3 + 2 \times 3 + 0 \times 1 = 48。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页