AT_tenka1_2018_e Equilateral

题目描述

在 $xy$ 平面上有若干硬币。硬币的分布用 $H$ 行 $W$ 列的网格表示,网格第 $i$ 行第 $j$ 列的字符 $s_{ij}$ 为 `#` 时,表示坐标 $(i,j)$ 上有一个硬币;为 `.` 时,表示坐标 $(i,j)$ 上没有硬币。除此之外,$xy$ 平面上没有其它硬币。 请计算满足以下条件的不同硬币三元组的个数: - 对于这 $3$ 个硬币中的任意 $2$ 个,其所在坐标之间的曼哈顿距离都相等。 其中,坐标 $(x,y)$ 和 $(x',y')$ 之间的曼哈顿距离定义为 $|x-x'|+|y-y'|$。另外,仅交换硬币顺序得到的三元组视为同一个三元组。

输入格式

输入以如下格式从标准输入读入。 > $H$ $W$ > $s_{11}\ldots s_{1W}$ > $\vdots$ > $s_{H1}\ldots s_{HW}$

输出格式

请输出满足条件的三元组的个数。

说明/提示

## 限制 - $1 \leq H, W \leq 300$ - $s_{ij}$ 仅为 `#` 或 `.` ## 样例说明 1 $((1,1),(1,3),(2,2)),((1,1),(2,2),(3,1)),((1,3),(3,1),(4,4))$ 满足条件。 由 ChatGPT 4.1 翻译