• codevs 1044 拦截导弹 1999年NOIP全国联赛提高组


    1044 拦截导弹

     

    1999年NOIP全国联赛提高组

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold
     
     
     
    题目描述 Description

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

      

    输入描述 Input Description

    输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数)

      

    输出描述 Output Description

    输出这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

    样例输入 Sample Input

    389 207 155 300 299 170 158 65 

    样例输出 Sample Output

    6

    2

    数据范围及提示 Data Size & Hint

    导弹的高度<=30000,导弹个数<=20

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 const int N=60;
     6 int f[N],a[N],f2[N];
     7 int main()
     8 {
     9     int n=0;
    10     int qqq;
    11     while(scanf("%d",&qqq)==1)
    12     {
    13         f2[n]=f[n]=1;
    14         a[++n]=qqq;    
    15     }
    16     int ans=-1;
    17     for(int i=2;i<=n;i++)
    18     {
    19         for(int j=1;j<i;j++)
    20         {
    21             if(a[j]>a[i])
    22             {
    23                 f2[i]=max(f2[i],f2[j]+1);
    24             }
    25         }
    26         if(f2[i]>ans)ans=f2[i];
    27     }
    28     printf("%d
    ",ans);
    29     
    30     ans=-1;
    31     f[1]=1;
    32     for(int i=2;i<=n;i++)
    33     {
    34         for(int j=1;j<i;j++)
    35         {
    36              if(a[i]>a[j])
    37             {
    38                 f[i]=max(f[i],f[j]+1);
    39             }
    40         }
    41         if(f[i]>ans)ans=f[i];
    42     }
    43     printf("%d
    ",ans);
    44     return 0;
    45 }
  • 相关阅读:
    19 Activity
    18 自定义对话框(CustomDialog)的应用
    17 AlertDialog的应用
    16 PopupWindow的应用
    15 Toast控件的应用
    14 FrameLayout布局
    13 用户登录界面
    12 BMI计算器
    11 RadioButton控件的应用
    004 虚拟机性能监控与故障处理工具
  • 原文地址:https://www.cnblogs.com/sssy/p/6764770.html
Copyright © 2020-2023  润新知