#CF1335E2. 三段回文(困难版)
三段回文(困难版)
三段回文(困难版)
- 时间限制:3 秒
- 内存限制:512 MiB
题目描述
给定一个由正整数组成的序列 。
如果一个序列至多包含两种不同的元素(记为 和 ,允许 ),并且可以写成
$$[\underbrace{x,x,\ldots,x}_{p},\underbrace{y,y,\ldots,y}_{q},\underbrace{x,x,\ldots,x}_{p}],$$其中 均为非负整数,那么称它为“三段回文”。例如,空序列、、、、 和 都是三段回文,而 、 和 不是。
请从 中选出一个最长的子序列,使其为三段回文,并求出这个子序列的长度。
如果序列 能够由序列 删除若干个(也可以不删除)元素且不改变其余元素的相对顺序得到,那么称 是 的子序列。
你需要处理 组相互独立的测试数据。
输入格式
第一行包含一个整数 (),表示测试数据组数。
每组测试数据的第一行包含一个整数 (),表示序列长度。
第二行包含 个整数 ()。
保证所有测试数据的 之和不超过 。
输出格式
对于每组测试数据,输出一行一个整数,表示最长三段回文子序列的长度。
样例输入 1
6
8
1 1 2 2 3 2 1 1
3
1 3 3
4
1 10 10 1
1
26
2
2 1
3
1 1 1
样例输出 1
7
2
4
1
1
3
数据范围
对于所有测试数据,,,,且单个输入文件中所有测试数据的 之和不超过 。
| 子任务编号 | 分值 | 特殊限制 |
|---|---|---|
| 1 | 20 | 每组测试数据均满足 |
| 2 | 40 | 每组测试数据均满足 |
| 3 | 无特殊限制 |