AT_abc330_d [ABC330D] Counting Ls

题目描述

给定一个 $N \times N$ 的网格。我们用 $(i,j)$ 表示从上往下第 $i$ 行、从左往右第 $j$ 列的格子。 每个格子的状态由 $N$ 个长度为 $N$ 的字符串 $S_1,S_2,\dots,S_N$ 给出,具体如下: - 当 $S_i$ 的第 $j$ 个字符为 `o` 时,$(i,j)$ 这个格子上写有 `o`。 - 当 $S_i$ 的第 $j$ 个字符为 `x` 时,$(i,j)$ 这个格子上写有 `x`。 请计算满足以下所有条件的格子三元组的个数: - 这 $3$ 个格子互不相同。 - 这 $3$ 个格子上都写有 `o`。 - 这 $3$ 个格子中,恰好有 $2$ 个在同一行。 - 这 $3$ 个格子中,恰好有 $2$ 个在同一列。 注意,只有当两个三元组中存在仅属于其中一个三元组的格子时,这两个三元组才被认为是不同的。

输入格式

输入按以下格式从标准输入读入。 > $N$ > $S_1$ > $S_2$ > $\vdots$ > $S_N$

输出格式

请输出满足条件的三元组的个数,结果为整数。

说明/提示

## 限制条件 - $N$ 是 $2$ 到 $2000$ 之间的整数。 - $S_i$ 是仅由 `o` 和 `x` 组成的长度为 $N$ 的字符串。 ## 样例解释 1 以下 $4$ 个三元组满足条件: - $(1,1),(1,2),(2,1)$ - $(1,1),(1,3),(2,1)$ - $(1,1),(1,3),(3,3)$ - $(1,2),(1,3),(3,3)$ 由 ChatGPT 4.1 翻译