CF1393D Rarity and New Dress

题目描述

Carousel Boutique 又忙起来了!Rarity 决定去参加小马舞会,她当然需要一件新裙子,因为多次穿同一件裙子出门是很不礼貌的。首先,她需要一个裙子图案,她打算从一块矩形的多彩布料上剪下来。 这块多彩布料由 $n \times m$ 个独立的正方形布片组成。由于 Rarity 喜欢有风格的裙子,裙子图案必须只包含同一种颜色的布片。裙子图案必须是正方形,并且由于 Rarity 喜欢菱形,图案的边必须与布料的边形成 $45^\circ$ 的夹角(这样它就像传统意义上的菱形)。 符合要求的裙子图案示例:![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1393D/1313c2f6e2e4ec2b50b9f433196c0f6817a45d78.png) 不符合要求的裙子图案示例:![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1393D/53b6557287b6852020c7bea84c9bc4969c632d30.png) 第一个包含了多种颜色的布片,第二个超出了布料的边界,第三个不是一个与布料边形成 $45^\circ$ 夹角的正方形。 Rarity 想知道,有多少种方法可以剪出满足所有条件的裙子图案。请帮助她,满足她的好奇心,这样她就能继续创作她的新杰作了。

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \leq n, m \leq 2000$)。接下来的 $n$ 行,每行包含 $m$ 个小写英文字母,第 $j$ 个字母表示当前行第 $j$ 列的布片。相同字母表示相同颜色,不同字母表示不同颜色。

输出格式

输出一个整数:满足 Rarity 所有条件的裙子图案的方案数。

说明/提示

在第一个样例中,所有大小为 $1$ 的裙子图案以及一个大小为 $2$ 的图案都是符合要求的。 在第二个样例中,只有大小为 $1$ 的裙子图案是符合要求的。 由 ChatGPT 4.1 翻译