题目链接

描述

大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度。突然有一天,雷达捕捉到敌国的导弹来袭。由于该系统存在缺陷,所以如果想把所有的导弹都拦截下来,就要多准备几套这样的导弹拦截系统。但是由于该系统成本太高,所以为了降低成本,请你计算一下最少需要多少套拦截系统。

  • 输入

    有多组测试数据。每组数据先输入一个整数N(N≤3000),代表有N发导弹来袭。接下来有N个数,分别代表依次飞来的导弹的导弹的高度。当N=-1时表示输入结束。
  • 输出

    每组输出数据占一行,表示最少需要多少套拦截系统。
  • 样例输入

    8

    389 207 155 300 299 170 158 65

    5

    265 156 123 76 26
  • 样例输出

    2

    1

分析:

因为呢每一个弹道拦截系统他下一次拦截的高度都不能够超过他上次拦截的高度(但是可以相等呢),所以当下次过来的导弹的高度比较高的时候,我们就不能用此次的这个拦截系统来拦截了,就的另外再用一个 新的导弹拦截系统。

那岂不是只要下一个比上一个高的话就重新用一个导弹拦截系统就行了?

但是我们要求用最少的导弹拦截系统,所以虽然此次的弹道拦截系统拦不住,但是说不定之前的某个导弹拦截系统是可以拦截住的呢,这样就不必要用新的导弹拦截系统了。因此也可以发现,每个导弹拦截系统当前能够拦截的最高高度是一个递减的序列。

代码:

#include<string>
#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n)&&n!=-1)
{
int a[3009]={0};///每个导弹拦截系统可以拦截的最高高度,是一个递减的序列
int k=1,num,i;
while(n--)
{
scanf("%d",&num);
for( i=1;i<k;i++)
{
if(a[i]>=num)///如果之前的导弹拦截系统能够拦住的话,就用之前的
{
a[i]=num;///并把该导弹拦截系统的拦截的最大高度刷新
break;
}
}
if(i==k)///否则的话就要新增加一个导弹拦截系统
a[k++]=num;
}
printf("%d\n",k-1);
}
return 0;
}

最新文章

  1. 42-stat 显示文件的信息
  2. linux命令**50
  3. 分析器错误消息: 类型“test.test.testx”不明确: 它可能来自程序集“F:\testProject\bin\test.test.DLL”或程序集“F:\testProject\bin \testProject.DLL”。请在类型名称中显式指定程序集。
  4. Entity Framework简介
  5. form表单生成的简单理解
  6. BZOJ 1692: [Usaco2007 Dec]队列变换
  7. poj 2411 Mondriaan&amp;#39;s Dream 【dp】
  8. 从linux telnet到exchange邮件server来測试发送邮件
  9. poj 2586 Y2K Accounting Bug(贪心算法,水题一枚)
  10. Android启动脚本init.rc(2)
  11. 001.net开发环境与变量
  12. python多目录字符串查找匹配
  13. Mybatis Generator代码自动生成(实体类、dao层、映射文件)
  14. sublime text3如何在浏览器预览?
  15. ABP适配Oracle全过程
  16. 1,rocketmq 的原理与安装教程
  17. 使用XHProf分析PHP性能瓶颈(一)
  18. NFS 常见报错
  19. 编译android源码遇到错误及其解决方法
  20. UFT12.续期的操作方法

热门文章

  1. mysql项目路径URL编码
  2. WebClient的使用
  3. HDU 4758——Walk Through Squares——2013 ACM/ICPC Asia Regional Nanjing Online
  4. 程序猿必备技能:数据库管理——关于MySQL
  5. Qt——数据的隐式共享
  6. liunx less 命令
  7. C++解析(9):关于const和引用的疑问
  8. 导航控制器里边添加UIScrollView (automaticallyAdjustsScrollViewInsets)
  9. 【BZOJ5319】军训列队(主席树)
  10. Linux内核分析第三周——构造一个简单的Linux系统MenuOS