zoukankan      html  css  js  c++  java
  • 导弹拦截

    试题描述
    某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000 的正整数),该导弹数量不超过100个计算这套系统最多能拦截多少导弹,和如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
    输入
    一行有若干个整数,表示依次飞来导弹的高度。两数之间用一个空格分隔。
    输出
    第一行一个数表示最多能拦截的导弹数 第二行一个数表示要拦截所有导弹最少要配备的系统数
    输入示例
    389 207 155 300 299 170 158 65
    输出示例
    6 2
    其他说明
    数据范围见题目中的描述。

     

     1 #include <cstdio>
     2 #include <iostream>
     3 #define MAXN 100 + 10
     4 using namespace std;
     5 int a[10010],b[10010],h[10010];
     6 int main()
     7 {   
     8     //freopen(".in","r",stdin);
     9     //freopen(".out","w",stdout);
    10     int i=1,maxn,ans=0,num=0,n=0;
    11     while(cin>>a[i])
    12     {
    13         maxn=0;
    14         for(int j=1;j<=i-1;j++)
    15             if(a[j]>=a[i] && b[j]>maxn)
    16                 maxn=b[j];
    17         b[i]=maxn+1;
    18         ans=max(b[i],ans);
    19         int x=0;
    20         for(int j=1;j<=num;j++)
    21             if(h[j]>=a[i])
    22                 if(x==0)
    23                     x=j;
    24                 else if(h[j]<h[x]) 
    25                     x=j;
    26         if(x==0)
    27         {
    28             num++;
    29             x=num;
    30         }
    31         h[x]=a[i];
    32         i++;
    33     }
    34     cout<<ans<<endl<<num;
    35     //system("pause");
    36 }
    导弹拦截
  • 相关阅读:
    buuctf-misc 一叶障目
    攻防世界-web ics-05
    攻防世界-web ics-06
    攻防世界-web NewsCenter
    攻防世界-web upload1
    攻防世界-web unserialize3
    攻防世界-web PHP2
    攻防世界-web2
    gitlab常用命令
    javascript编程风格
  • 原文地址:https://www.cnblogs.com/jason2003/p/6571995.html
Copyright © 2011-2022 走看看