A6178 | Not Splitting
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
有一个 $k \times k$ 的网格,其中 $k$ 是偶数。第 $r$ 行第 $c$ 列的格子记作 $(r, c)$。如果两个格子 $(r_1, c_1)$ 和 $(r_2, c_2)$ 满足 $|r_1 - r_2| + |c_1 - c_2| = 1$,则它们被认为是相邻的。
如果一组相邻格子的数组可以通过沿网格线切割,将网格分成两个连通且全等的部分,并且每一对格子都属于同一部分,则称该数组是“强”的。两个部分如果可以通过平移、旋转、翻转或它们的组合互相重合,则称为全等。
上图表示第一个测试用例。箭头表示格子的配对,粗黑线表示切割线。你将得到一个长度为 $n$ 的相邻格子对数组 $a$。请你求出 $a$ 的最大强子序列的长度。若数组 $p$ 可以通过从数组 $q$ 中删除若干(可能为零或全部)元素得到,则称 $p$ 是 $q$ 的一个子序列。
如果一组相邻格子的数组可以通过沿网格线切割,将网格分成两个连通且全等的部分,并且每一对格子都属于同一部分,则称该数组是“强”的。两个部分如果可以通过平移、旋转、翻转或它们的组合互相重合,则称为全等。
上图表示第一个测试用例。箭头表示格子的配对,粗黑线表示切割线。你将得到一个长度为 $n$ 的相邻格子对数组 $a$。请你求出 $a$ 的最大强子序列的长度。若数组 $p$ 可以通过从数组 $q$ 中删除若干(可能为零或全部)元素得到,则称 $p$ 是 $q$ 的一个子序列。输入格式
输入包含多组测试用例。第一行包含一个整数 $t$($1 \leq t \leq 100$),表示测试用例的数量。
每个测试用例的第一行包含两个用空格分隔的整数 $n$ 和 $k$($1 \leq n \leq 10^5$;$2 \leq k \leq 500$,且 $k$ 为偶数),分别表示数组 $a$ 的长度和网格的大小。
接下来 $n$ 行,每行包含四个用空格分隔的整数 $r_{i,1}$、$c_{i,1}$、$r_{i,2}$ 和 $c_{i,2}$($1 \leq r_{i,1}, c_{i,1}, r_{i,2}, c_{i,2} \leq k$),表示第 $i$ 个元素,即第一个格子的行列 $(r_{i,1}, c_{i,1})$ 和第二个格子的行列 $(r_{i,2}, c_{i,2})$。这两个格子是相邻的。
保证所有测试用例中 $n$ 的总和不超过 $10^5$,$k$ 的总和不超过 $500$。
每个测试用例的第一行包含两个用空格分隔的整数 $n$ 和 $k$($1 \leq n \leq 10^5$;$2 \leq k \leq 500$,且 $k$ 为偶数),分别表示数组 $a$ 的长度和网格的大小。
接下来 $n$ 行,每行包含四个用空格分隔的整数 $r_{i,1}$、$c_{i,1}$、$r_{i,2}$ 和 $c_{i,2}$($1 \leq r_{i,1}, c_{i,1}, r_{i,2}, c_{i,2} \leq k$),表示第 $i$ 个元素,即第一个格子的行列 $(r_{i,1}, c_{i,1})$ 和第二个格子的行列 $(r_{i,2}, c_{i,2})$。这两个格子是相邻的。
保证所有测试用例中 $n$ 的总和不超过 $10^5$,$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$ 并不是强的,但如果取子序列 $[a_1, a_2, a_3, a_4, a_5, a_6, a_8]$,则可以如题面所示将正方形分割。
在第二个测试用例中,可以取 $a$ 的最后四个元素组成的子序列,并用一条水平中线将正方形分割。
在第一个测试用例中,数组 $a$ 并不是强的,但如果取子序列 $[a_1, a_2, a_3, a_4, a_5, a_6, a_8]$,则可以如题面所示将正方形分割。
在第二个测试用例中,可以取 $a$ 的最后四个元素组成的子序列,并用一条水平中线将正方形分割。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?