AT_abc410_f [ABC410F] Balanced Rectangles

题目描述

给你一个 $H\times W$ 的网格 $S$,仅由 `#` 和 `.` 组成。 求其中有多少个矩形区域,其中 `#` 和 `.` 的个数相等。 形式化地,求满足以下条件的整数四元组 $(u,d,l,r)$ 的个数: - $1\le u\le d\le H$ - $1\le l\le r\le W$ - $\sum\limits_{i=u}^d\sum\limits_{j=l}^r[S_{i,j}=$`#`$]=\sum\limits_{i=u}^d\sum\limits_{j=l}^r[S_{i,j}=$`.`$]$

输入格式

多组数据。第一行一个整数 $T(1\le T\le 2.5\times 10^4)$,表示数据组数。 对于每组数据:\ 第一行两个整数 $H,W$。\ 接下来 $H$ 行,每行一个长为 $W$ 的,由 `#` 和 `.` 组成的字符串 $S_i$。 保证单个测试点中,$\sum (HW)\le 3\times 10^5$。

输出格式

对于每组数据,输出一行一个整数表示答案。

说明/提示

**样例解释** 样例包含三组测试数据。 对于第一组数据,满足条件的 $4$ 个四元组如下: - $(1,2,2,2)$ - $(2,3,1,1)$ - $(2,2,1,2)$ - $(1,3,1,2)$ By @[chenxi2009](/user/1020063)