CF628E Zbazi in Zeydabad

题目描述

一位游客想前往 Zeydabad 国旅行,体验当地的 Zbazi 游戏。 Zeydabad 国可以看作一个由 $n$ 行 $m$ 列组成的矩形表格。该国的每个格子要么是 'z',要么是 '.'。 这位游客之所以知道这里被称为 Zeydabad,是因为这个国家里有许多“Z 形模式”。一个“Z 形模式”指的是一个正方形,其副对角线(从左上角到右下角的对角线)上所有的格子必须全为 'z',并且该正方形的最上面一行和最下面一行的所有格子也都必须为 'z'。正方形中其余的格子可以是任意字符。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF628E/1dd3a4a39a26eabd5113af3bad685b4a12148713.png) 注意,一个“Z 形模式”也可以只是单个格子(见样例)。 因此他的目的是想要统计出 Zeydabad 国中所有“Z 形模式”的个数(掌握该技能对于玩 Zbazi 十分必要)。 现在你的任务就是帮助游客统计出“Z 形模式”的数量。 由于输入输出数据量可能非常大,建议使用高效的输入输出方式:例如在 C++ 中使用 gets/scanf/printf 代替 getline/cin/cout,在 Java 中使用 BufferedReader/PrintWriter 代替 Scanner/System.out。

输入格式

第一行包含两个整数 $n, m$($1 \leq n, m \leq 3000$),分别代表矩形表格的行数和列数。 接下来的 $n$ 行,每行包含 $m$ 个字符 'z' 或 '.',描述了 Zeydabad 国的地图。

输出格式

输出一个整数 $a$,表示 Zeydabad 国中“Z 形模式”的总个数。

说明/提示

由 ChatGPT 5 翻译