• SSL JudgeOnline 1082——导弹拦截


    Description

      某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

      输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

    Sample Input

    300 250 275 252 200 138 245
    Sample Output

    5(最多能拦截的导弹数)
    2(要拦截所有导弹最少要配备的系统数)


    首先我们可以用eoln来控制输入。

    然后我们可以先弄能拦截的导弹数,判断这次寻找找到了最大值,就更新数据。

    然后就根据上面的方法,求出要拦截所有导弹最少要配备的系统数。


    代码如下:

    var
      a,b,c,k:array[1..1000] of longint;
      n,i,j,max,min,high:longint;
    begin
      while not eoln do
        begin
          inc(n);
          read(a[n]);
          b[n]:=1;
          c[n]:=0;
        end;
      for i:=n-1 downto 1 do
        begin
          max:=0;
          for j:=i+1 to n do
            if (a[j]<=a[i]) and (b[j]>max) then max:=b[j];
          b[i]:=max+1;
        end;
      max:=0;
      for i:=1 to n do
        if b[i]>max then max:=b[i];
      writeln(max);
      min:=0;
      for i:=1 to n do
        begin
          if k[i]<>1 then
            begin
              k[i]:=1;
              high:=a[i];
              for j:=i+1 to n do
                if (high>=a[j]) and (k[j]<>1) then
                  begin
                    high:=a[j];
                    k[j]:=1;
                  end;
              inc(min);
            end;
        end;
      writeln(min);
    end.
  • 相关阅读:
    git初学
    Android中activity的四个启动模式
    onsaveInstanceState有关问题
    default activity not found的问题
    实现随手指移动
    入园第一天
    玩转Django2.0---Django笔记建站基础八(admin后台系统)
    玩转Django2.0---Django笔记建站基础七(表单与模型)
    玩转Django2.0---Django笔记建站基础六(模型与数据库)
    玩转Django2.0---Django笔记建站基础五(模板)
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412463.html
Copyright © 2020-2023  润新知