#684. 删除 2 x 2 ②

删除 2 x 2 ②

题目描述

有一个 H×WH\times W 的网格,每个格子被涂成白色或黑色。记第 ii 行(从上往下,1iH1\le i\le H)、第 jj 列(从左往右,1jW1\le j\le W)的格子为格子 (i,j)(i,j)。网格的状态由 HH 个长度为 WW 的字符串 S1,S2,,SHS_1,S_2,\dots,S_H 给出:若 SiS_i 的第 jj 个字符为 . 则格子 (i,j)(i,j) 为白色;若为 # 则为黑色。

高桥先生 想把若干(可以为零)黑色格子重涂为白色,使得网格中不存在全部为黑色的 2×22\times 2 子方格。更精确地说,他想满足下面的条件:

  • 对任意整数对 (i,j)(i,j)1iH11\le i\le H-11jW11\le j\le W-1),格子 (i,j),(i,j+1),(i+1,j),(i+1,j+1)(i,j),(i,j+1),(i+1,j),(i+1,j+1) 中至少有一个是白色。

请你求出使得上述目标成立所需重涂为白色的最少黑色格子数。

给出 TT 个测试用例,请分别回答。

输入格式

  • 第一行包含一个整数 TT1t1001\le t\le 100)——测试用例数。随后是 TT 个测试用例。

  • 每个测试用例先给出两个整数 HHWW

  • 随后 HH 行每行一个字符串 SiS_i 描述网格第 ii 行。

输出格式

输出 TT 行。第 ii 行输出第 ii 个测试用例的答案(所需重涂的最少格子数)。

样例输入

2
5 5
####.
##.##
#####
.####
##.#.
2 2
..
..

样例输出

3
0

说明

样例解释

  • 对第一个测试用例,初始网格如题中所示。可以将例如图中标号的 33 个黑格涂成白色,使得不再存在全黑的 2×22\times2 子方格。无法通过涂 22 个或更少的格子实现目标,因此输出 33图片描述
  • 对第二个测试用例,网格已经满足条件(没有全黑的 2×22\times2 子方格),因此答案为 00

数据范围

  • 1T1001\le T\le 100
  • 2H72\le H\le 7
  • 2W72\le W\le 7
  • 每个 SiS_i 是长度为 WW 的字符串,只包含 .#
  • T,H,WT,H,W 为整数。