Antimonotonicity (Standard IO)

来源:互联网 发布:mac开机黑屏 编辑:程序博客网 时间:2024/05/01 02:53

题意/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.


4 0
原创粉丝点击