#P1084. Square Destroyer

Square Destroyer

题目描述

下面的左图展示了一个完整的333*3网格,由2(34)2*(3*4)(即2424)根火柴棒组成。所有火柴棒的长度均为11。你可以在这个网格中找到许多不同大小的正方形。正方形的大小由其边长决定。在左图所示的网格中,有99个边长为11的正方形,44个边长为22的正方形,以及11个边长为33的正方形。

完整网格中的每根火柴棒都有一个唯一的编号,编号的分配顺序是从左到右、从上到下,如左图所示。如果从完整网格中移除一些火柴棒,那么网格中的某些正方形会被破坏,从而形成一个不完整的333*3网格。右图展示了一个不完整的333*3网格,其中移除了编号为121217172323的三根火柴棒。这一移除破坏了55个边长为11的正方形、33个边长为22的正方形和11个边长为33的正方形。因此,不完整的网格中不再有边长为33的正方形,但仍然有44个边长为11的正方形和11个边长为22的正方形。

输入时,你会得到一个由不超过2n(n+1)2n(n+1)根火柴棒组成的nnn*n网格(可能是完整的或不完整的),其中nn是一个自然数且5n5 \leq n。你的任务是计算最少需要移除多少根火柴棒才能破坏输入nnn*n网格中所有现有的正方形。

输入格式

输入包含TT个测试用例。测试用例的数量TT在输入文件的第一行给出。

每个测试用例由两行组成:第一行包含一个自然数nn(不超过55),表示输入的是一个nnn*n网格(可能是完整的或不完整的);第二行以一个非负整数kk开头,表示从完整的nnn*n网格中缺失的火柴棒数量,后面跟着kk个数字,指定缺失的火柴棒编号。如果kk等于00,则输入网格是一个完整的nnn*n网格;否则,输入网格是一个不完整的nnn*n网格,其中指定的kk根火柴棒已从完整网格中移除。

输出格式

对于每个测试用例,输出一行,包含需要移除的最少火柴棒数量,以破坏输入网格中的所有正方形。

示例输入 1

2
2
0
3
3 12 17 23

示例输出 1

3
3

来源

Taejon 2001