A90627.Not Splitting

普及+/提高

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

有一个 k×kk \times k 的网格,其中 kk 是偶数。第 rr 行第 cc 列的格子记作 (r,c)(r, c)。如果两个格子 (r1,c1)(r_1, c_1)(r2,c2)(r_2, c_2) 满足 r1r2+c1c2=1|r_1 - r_2| + |c_1 - c_2| = 1,则它们被认为是相邻的。

如果一组相邻格子的数组可以通过沿网格线切割,将网格分成两个连通且全等的部分,并且每一对格子都属于同一部分,则称该数组是“强”的。两个部分如果可以通过平移、旋转、翻转或它们的组合互相重合,则称为全等。

上图表示第一个测试用例。箭头表示格子的配对,粗黑线表示切割线。你将得到一个长度为 nn 的相邻格子对数组 aa。请你求出 aa 的最大强子序列的长度。若数组 pp 可以通过从数组 qq 中删除若干(可能为零或全部)元素得到,则称 ppqq 的一个子序列。

输入格式

输入包含多组测试用例。第一行包含一个整数 tt1t1001 \leq t \leq 100),表示测试用例的数量。

每个测试用例的第一行包含两个用空格分隔的整数 nnkk1n1051 \leq n \leq 10^52k5002 \leq k \leq 500,且 kk 为偶数),分别表示数组 aa 的长度和网格的大小。

接下来 nn 行,每行包含四个用空格分隔的整数 ri,1r_{i,1}ci,1c_{i,1}ri,2r_{i,2}ci,2c_{i,2}1ri,1,ci,1,ri,2,ci,2k1 \leq r_{i,1}, c_{i,1}, r_{i,2}, c_{i,2} \leq k),表示第 ii 个元素,即第一个格子的行列 (ri,1,ci,1)(r_{i,1}, c_{i,1}) 和第二个格子的行列 (ri,2,ci,2)(r_{i,2}, c_{i,2})。这两个格子是相邻的。

保证所有测试用例中 nn 的总和不超过 10510^5kk 的总和不超过 500500

输出格式

对于每个测试用例,输出一个整数,表示 aa 的最大强子序列的长度。

输入输出样例

  • 输入#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

说明/提示

样例说明

在第一个测试用例中,数组 aa 并不是强的,但如果取子序列 [a1,a2,a3,a4,a5,a6,a8][a_1, a_2, a_3, a_4, a_5, a_6, a_8],则可以如题面所示将正方形分割。

在第二个测试用例中,可以取 aa 的最后四个元素组成的子序列,并用一条水平中线将正方形分割。

首页