#P11531. [2024省队模拟]轰炸

[2024省队模拟]轰炸

【题目描述】

W 国的布局可以看作一个 nnmm 列的网格,每一个格子里都有一座城市。

作为 W 国的敌对势力 E 国,早已做好发动空袭的准备。在 E 国的计划中,W 国的一些城市已被标记。这些城市可能是重要军事基地,也可能是经济枢纽。

而今天,E 国将发动空袭。具体地,E 国将会不断执行以下操作直到所有被标记城市均被轰炸过:

发射一枚导弹。这枚导弹会轰炸一对相邻的城市(这里的相邻定义为四连通),每一对相邻的城市被轰炸的概率是相等的。

作为 E 国的战略军事大师,你需要报告本次空袭期望会发射多少枚导弹。

【输入格式】

从文件 destroy.indestroy.in 中读入数据。

第一行两个整数 n,mn,m

接下来 nn 行,每行一个长度为 mm 的字符串,字符串中仅包含 *.. 两种字符。其中 \texttt{*} 表示该城市被标记。

【输出格式】

输出到文件 destroy.outdestroy.out 中。

一个整数,表示在模 998244353998244353 意义下的答案。

【样例 #1】

输入:

1 3
***

输出:

3

【样例 1 解释】

第一次可能轰炸 {1,2}\{1,2\}{2,3}\{2,3\}。无论是哪一个,最终还剩一座城市未被轰炸。

剩下的城市被轰炸需要发射的期望导弹数为 1+12+14+18+...=21+\frac{1}{2}+\frac{1}{4}+\frac{1}{8}+...=2

所以最终期望发射导弹数量为 1+2=31+2=3 枚。

【样例 2】

见选手目录下的 destroy/ex_destroy2.indestroy/ex\_destroy2.indestroy/ex_destroy2.outdestroy/ex\_destroy2.out

该样例满足 cnt6cnt\leq 6

【样例 3】

见选手目录下的 destroy/ex_destroy3.indestroy/ex\_destroy3.indestroy/ex_destroy3.outdestroy/ex\_destroy3.out

该样例满足 n=1n=1

【样例 4】

见选手目录下的 destroy/ex_destroy4.indestroy/ex\_destroy4.indestroy/ex_destroy4.outdestroy/ex\_destroy4.out

该样例满足 m20m\leq 20

【数据范围和约定】

保证对于所有的测试点满足以下限制:n6,2m100n\leq 6,2\leq m\leq 100

设最大的由* 组成的连通块大小为 ss

* 的个数为 cntcnt

测试点编号 特殊性质
1 \sim 3 cnt6cnt\leq 6
4 \sim 6 cnt18cnt\leq 18
7 \sim 9 s1s\leq 1
10 \sim 12 n=1n=1
13 \sim 16 m20m\leq 20
17 \sim 20