和上题一个思路,连题都没看,只不过这个是求单个的。
可是有一点,我用500005的数据,居然无法编译!?上一道题可是加结构体和排序也可以啊,真是越来越搞不懂cb这软件了。。。
#include <stdio.h>
#include <string.h>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 40000+100;
const int INF = 1<<27;
int main()
{
// freopen("in.txt", "r", stdin);
int p, n, i, k, ans;
int dp[N], blo[N];
while(~scanf("%d", &n))
{
while(n --)
{
scanf("%d", &p);
for(int i = 1; i <= p; i ++)
{
scanf("%d", &blo[i]);
dp[i] = INF;
}
ans = 0;
for(i = 1; i <= p; i ++)
{
k = lower_bound(dp + 1, dp + p + 1, blo[i]) - dp;
ans = max(ans, k);
dp[k] = blo[i];
}
printf("%d\n", ans);
}
}
return 0;
}