某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
分析:最长不上升序列,数据很水直接用n方==。
const maxn=100000; var max,i,j,n,ans:longint; f,a,v:array[1..maxn] of longint; flag:boolean; begin n:=0; while not eoln do begin inc(n); read(a[n]); end; f[n]:=1; for i:=n-1 downto 1 do begin max:=1; for j:=i+1 to n do if (a[j]<=a[i]) and (f[j]+1>max) then max:=f[j]+1; f[i]:=max; end; max:=0; for i:=1 to n do if f[i]>max then max:=f[i]; writeln(max); fillchar(v,sizeof(v),0); ans:=1; v[ans]:=a[1]; for i:=2 to n do begin flag:=false; for j:=1 to ans do if a[i]<=v[j] then begin v[j]:=a[i]; flag:=true; break; end; if not flag then begin inc(ans); v[ans]:=a[i]; end; end; writeln(ans); end.