A90627.Not Splitting
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
有一个 k×k 的网格,其中 k 是偶数。第 r 行第 c 列的格子记作 (r,c)。如果两个格子 (r1,c1) 和 (r2,c2) 满足 ∣r1−r2∣+∣c1−c2∣=1,则它们被认为是相邻的。
如果一组相邻格子的数组可以通过沿网格线切割,将网格分成两个连通且全等的部分,并且每一对格子都属于同一部分,则称该数组是“强”的。两个部分如果可以通过平移、旋转、翻转或它们的组合互相重合,则称为全等。
上图表示第一个测试用例。箭头表示格子的配对,粗黑线表示切割线。你将得到一个长度为 n 的相邻格子对数组 a。请你求出 a 的最大强子序列的长度。若数组 p 可以通过从数组 q 中删除若干(可能为零或全部)元素得到,则称 p 是 q 的一个子序列。
输入格式
输入包含多组测试用例。第一行包含一个整数 t(1≤t≤100),表示测试用例的数量。
每个测试用例的第一行包含两个用空格分隔的整数 n 和 k(1≤n≤105;2≤k≤500,且 k 为偶数),分别表示数组 a 的长度和网格的大小。
接下来 n 行,每行包含四个用空格分隔的整数 ri,1、ci,1、ri,2 和 ci,2(1≤ri,1,ci,1,ri,2,ci,2≤k),表示第 i 个元素,即第一个格子的行列 (ri,1,ci,1) 和第二个格子的行列 (ri,2,ci,2)。这两个格子是相邻的。
保证所有测试用例中 n 的总和不超过 105,k 的总和不超过 500。
输出格式
对于每个测试用例,输出一个整数,表示 a 的最大强子序列的长度。
输入输出样例
输入#1
3 8 4 1 2 1 3 2 2 2 3 3 2 3 3 4 2 4 3 1 4 2 4 2 1 3 1 2 2 3 2 4 1 4 2 7 2 1 1 1 2 2 1 2 2 1 1 1 2 1 1 2 1 1 2 2 2 1 1 2 1 1 2 2 2 1 6 3 3 3 4
输出#1
7 4 1
说明/提示
样例说明
在第一个测试用例中,数组 a 并不是强的,但如果取子序列 [a1,a2,a3,a4,a5,a6,a8],则可以如题面所示将正方形分割。
在第二个测试用例中,可以取 a 的最后四个元素组成的子序列,并用一条水平中线将正方形分割。