SP14822 BSHIP - Battleships
题目描述
你和朋友正沉浸在经典的战舰游戏中。每个人的战场是一个由 $M$ 行 $N$ 列单元格组成的网格($1 \leq M, N \leq 2000$)。每个单元格要么为空,要么有一艘船(在这个版本中,每艘船只占一个单元格)。游戏目标是击中对方的单元格,摧毁他所有的船只。
在这场充满竞争的游戏中,你们赌上了大量的互联网积分。不巧的是,你的朋友表现异常出色,眼看要赢得比赛。情急之下,你想出了一个“小聪明”。
你知道可以通过告诉他有位著名程序员在他身后,从而分散他的注意力,不过这种手段只能用一次(毕竟程序员很容易上当)。趁他转身的时候,你有机会快速用手抓住一些他的船只。你的手掌可以覆盖一个 $S \times S$ 的正方形区域($1 \leq S \leq \min\{M, N\}$),并能一次抓取该区域内的所有船只。
显然,对手为了防止作弊,已经把他的网格藏得很严实。因此,除了知道网格的大小外,你对具体细节一无所知。届时,你只能随机选择一个 $S \times S$ 的正方形区域,假设它完全位于网格之内。
围观的人群兴致勃勃,其中一位能看到你对手网格的朋友,对于你可能抓到的船只数量感到好奇(也就是在所有可能选项中的平均船只数量)。虽然他是个“学霸”,可光靠脑袋想不出答案,于是他跑去写了个程序……
输入格式
第1行:三个整数 $M$、$N$ 和 $S$。
接下来的 $M$ 行:每行 $N$ 个字符,代表你对手的网格——‘X’ 表示一艘船,‘.’ 表示空单元格。
输出格式
一个数字——即你能抓到的船只数量的期望值,结果四舍五入到小数点后6位。
**本翻译由 AI 自动生成**