#P1084. Square Destroyer
Square Destroyer
题目描述
下面的左图展示了一个完整的网格,由(即)根火柴棒组成。所有火柴棒的长度均为。你可以在这个网格中找到许多不同大小的正方形。正方形的大小由其边长决定。在左图所示的网格中,有个边长为的正方形,个边长为的正方形,以及个边长为的正方形。
完整网格中的每根火柴棒都有一个唯一的编号,编号的分配顺序是从左到右、从上到下,如左图所示。如果从完整网格中移除一些火柴棒,那么网格中的某些正方形会被破坏,从而形成一个不完整的网格。右图展示了一个不完整的网格,其中移除了编号为、和的三根火柴棒。这一移除破坏了个边长为的正方形、个边长为的正方形和个边长为的正方形。因此,不完整的网格中不再有边长为的正方形,但仍然有个边长为的正方形和个边长为的正方形。
输入时,你会得到一个由不超过根火柴棒组成的网格(可能是完整的或不完整的),其中是一个自然数且。你的任务是计算最少需要移除多少根火柴棒才能破坏输入网格中所有现有的正方形。
输入格式
输入包含个测试用例。测试用例的数量在输入文件的第一行给出。
每个测试用例由两行组成:第一行包含一个自然数(不超过),表示输入的是一个网格(可能是完整的或不完整的);第二行以一个非负整数开头,表示从完整的网格中缺失的火柴棒数量,后面跟着个数字,指定缺失的火柴棒编号。如果等于,则输入网格是一个完整的网格;否则,输入网格是一个不完整的网格,其中指定的根火柴棒已从完整网格中移除。
输出格式
对于每个测试用例,输出一行,包含需要移除的最少火柴棒数量,以破坏输入网格中的所有正方形。
示例输入 1
2
2
0
3
3 12 17 23
示例输出 1
3
3
来源
Taejon 2001