#2008. 子序列问题

子序列问题

子序列问题

2S

题目描述

我们称一个长度为 kk 的整数序列 C=(c1,c2,,ck)C=(c_1,c_2,\dots,c_k) 是“好”的,当且仅当它的最小元素最大元素的平均值恰好等于它的中位数

对于一个长度为 kk 的序列,其中位数定义为:将序列从小到大排序后,第 k/2\lceil k/2\rceil 小的元素。其中 x\lceil x\rceil 表示不小于 xx 的最小整数。

例如:

  • 序列 1,7,4,31,7,4,3 的中位数是 33,因为排序后为 1,3,4,71,3,4,7
  • 序列 5,8,2,1,65,8,2,1,6 的中位数是 55,因为排序后为 1,2,5,6,81,2,5,6,8

形式化地说,设 D=(d1,d2,,dk)D=(d_1,d_2,\dots,d_k)CC 排序后的序列,则 CC 是“好”的,当且仅当

d1+dk2=dk/2\frac{d_1+d_k}{2}=d_{\lceil k/2\rceil}

现在给定一个整数序列 A=(a1,a2,,an)A=(a_1,a_2,\dots,a_n),请你求出它的最长“好”子序列的长度。

子序列是指:通过删除原序列中的某些元素(也可以一个都不删),且不改变剩余元素相对顺序得到的新序列。


输入格式

输入包含多组测试数据。

从标准输入按以下格式读取数据:

TT

nn

a1a_1 a2a_2 \dots ana_n

其中:

  • 第一行输入一个整数 TT,表示测试数据组数。

  • 对于每组测试数据:

    • 第一行输入一个整数 nn,表示序列长度;
    • 第二行输入 nn 个整数 aia_i,表示给定序列。

数据范围

  • 1T101 \le T \le 10
  • 1n3×1031 \le n \le 3 \times 10^3
  • 1ai1091 \le a_i \le 10^9
  • 保证所有测试数据中 nn 的总和不超过 3×1043 \times 10^4

部分数据满足:

  • 3030% 的数据满足:n20, ai100n \le 20,\ a_i \le 100
  • 6060% 的数据满足:n100, ai103n \le 100,\ a_i \le 10^3
  • 8080% 的数据满足:n1000n \le 1000
  • 100100% 的数据无特殊限制

输出格式

对于每组测试数据,输出一行一个整数,表示最长“好”子序列的长度。

样例

4
7
3 5 9 8 2 11 5
7
7 9 2 4 17 10 15
1
100
2
100 100
5
4
1
2

说明/提示

对于第一个样例,最长的“好”子序列是 3,5,8,2,53,5,8,2,5。其最小元素为 22,最大元素为 88,中位数为 55

对于第二个样例,最长的“好”子序列是 7,9,4,107,9,4,10。其最小元素为 44,最大元素为 1010,中位数为 77