本文主要是介绍codeves天梯 导弹拦截,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
分析:最长不上升序列,数据很水直接用n方==。
constmaxn=100000;varmax,i,j,n,ans:longint;f,a,v:array[1..maxn] of longint;flag:boolean;beginn:=0;while not eoln dobegininc(n);read(a[n]);end;f[n]:=1;for i:=n-1 downto 1 dobeginmax:=1;for j:=i+1 to n doif (a[j]<=a[i]) and (f[j]+1>max) thenmax:=f[j]+1;f[i]:=max;end;max:=0;for i:=1 to n doif f[i]>max thenmax:=f[i];writeln(max);fillchar(v,sizeof(v),0);ans:=1;v[ans]:=a[1];for i:=2 to n dobeginflag:=false;for j:=1 to ans doif a[i]<=v[j] thenbeginv[j]:=a[i];flag:=true;break;end;if not flag thenbegininc(ans);v[ans]:=a[i];end;end;writeln(ans); end.
这篇关于codeves天梯 导弹拦截的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!