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 翻译