题意/Description:
给你1-N的一个排列,数列中的数字互不相等,要求找出最长的子序列a。
满足a1 > a2,a2 < a3,a3 > a4,a4 < a5……
读入/Input:
T 代表T组数据 T<=50
每组数据一行: n 代表给你n个数,然后就是n个数 N<=30000
输出/Output:
T行 每行一个数:
对于每组数据输出最长子序列的长度
题解/solution:
开始做的时候,没看清题目。要注意是子序列,暴力吧。
代码/Code:
var
a,f:array[1..30001] of longint;
nm,n,ans:longint;
procedure main;
var
i:longint;
begin
ans:=1;
f[1]:=a[1];
for i:=2 to n do
begin
if (ans+1) mod 2=1 then
begin
if a[i]>f[ans] then
begin
inc(ans);
f[ans]:=a[i];
end else f[ans]:=a[i];
end else
begin
if a[i]<f[ans] then
begin
inc(ans);
f[ans]:=a[i];
end else f[ans]:=a[i];
end;
end;
writeln(ans);
end;
procedure init;
var
i,k:longint;
begin
readln(nm);
for k:=1 to nm do
begin
fillchar(f,sizeof(f),0);
fillchar(a,sizeof(a),0);
read(n);
for i:=1 to n do
read(a[i]);
main;
readln;
end;
end;
begin
init;
end.