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

    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<algorithm>
     3 using namespace std;
     4 const int maxn=20+5;
     5 int dp[maxn],dp2[maxn],high[maxn],ans=0,ans2=0,cnt=0;
     6 int main()
     7 {
     8     while(cin>>high[cnt])
     9     {
    10         dp[cnt]=1;
    11         dp2[cnt]=1;
    12         cnt++;
    13     }
    14     for(int j=0; j<cnt; j++)
    15     {
    16         for(int k=0; k<j; k++)
    17         {
    18             if(high[k]>=high[j])
    19                 dp[j]=max(dp[j],dp[k]+1);
    20             if(high[k]<=high[j])
    21                 dp2[j]=max(dp2[j],dp2[k]+1);
    22         }
    23         ans=max(ans,dp[j]);
    24         ans2=max(ans2,dp2[j]);
    25     }
    26     cout<<ans<<endl<<ans2<<endl;
    27 }
  • 相关阅读:
    数组里面为对象根据某一属性排序
    理由<a>标签跳转到对应锚点
    jquery对复选框选中
    Fullcalendar
    es6学习
    vue 关于树杈图问题
    input 复选框样式修改
    GAMES101 作业2
    一份自己iOS 面试题,拿到15K35K,分享出来
    Cesium 一款面向三维地球和地图的,世界级的JavaScript开源产品
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6759209.html
Copyright © 2011-2022 走看看