问题描述:

又见拦截导弹

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述

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

输入
有多组测试数据。
每组数据先输入一个整数N(N≤3000),代表有N发导弹来袭。接下来有N个数,分别代表依次飞来的导弹的导弹的高度。当N=-1时表示输入结束。
输出
每组输出数据占一行,表示最少需要多少套拦截系统。
样例输入
8
389 207 155 300 299 170 158 65
5
265 156 123 76 26
样例输出
2
1

分析:此题依然是动态规划问题,可以用动态规划的思想记录下每个阶段的最优解:有1个导弹来袭需要几个装置;有2个导弹来袭,需要几个装置;……有n个导弹来袭,需要几个装置。这样有小到大的分析,即得最终问题的最优解。

动态规划的解法:(40ms)

#include<stdio.h>
int main()
{int n,i,j,c,a[3000],dp[3000];while(1){scanf("%d",&n);if(n==-1)break;for(i=0;i<n;i++) scanf("%d",&a[i]);dp[0]=a[0]; c=1; for(i=1;i<n;i++){for(j=0;j<c;j++)if(a[i]<=dp[j]){dp[j]=a[i];break;}if(j>=c){dp[j]=a[i]; c++;}}printf("%d\n",c);}return 0;
}        

普通解法:对n个 导弹进行多次遍历,每次找一个最小值,按最小值找一个最长非递减序列,全部处理,每处理一个n--,表示还有n个未处理;每对这n个导弹遍历一遍需要的装置个数cnt++;

 #include <stdio.h>
int main()
{int n,s[3005]={0};while(scanf("%d", &n)&&n !=-1){for(int i=0; i<n; i++)scanf("%d", &s[i]);int cnt=0, k=n,pre;while(k){pre=0;for(int i=n-1; i>=0; i--){if(s[i]>=pre){pre = s[i];s[i] = -1;k--;}}cnt++;}printf("%d\n", cnt);}return 0;
}

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=814

动态规划之——又见拦截导弹(nyoj814)相关推荐

  1. YTU_3137: 动态规划基础题目之拦截导弹

    Description 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕 ...

  2. 动态规划之——拦截导弹(nyoj79)

    问题描述: 拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮 ...

  3. 牛客:【2021秋季算法入门班第七章习题:动态规划1】部分题解:方块与收纳盒、舔狗舔到最后一无所有、可爱の星空、[NOIP1999]拦截导弹

    题单链接:牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)  P1001 方块与收纳盒 传送门:1001-方块与收纳盒_2021秋季 ...

  4. 详解拦截导弹问题(动态规划)

    题目 拦截导弹 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹,拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌 ...

  5. 1044 拦截导弹——http://codevs.cn/problem/1044/

    第一部分:题目 题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于 ...

  6. BZOJ 2244: [SDOI2011]拦截导弹 DP+CDQ分治

    2244: [SDOI2011]拦截导弹 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度.并且能够拦截 ...

  7. BZOJ - 2244 拦截导弹 (dp,CDQ分治+树状数组优化)

    BZOJ - 2244 拦截导弹 (dp,CDQ分治+树状数组优化) 1 #include<algorithm> 2 #include<iostream> 3 #include ...

  8. BZOJ2244 [SDOI2011]拦截导弹 【cdq分治 + 树状数组】

    题目 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度.并且能够拦截任意速度的导弹,但是以后每一发炮弹都不能高于前一发的高度,其 ...

  9. NYOJ 79 拦截导弹

    拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任 ...

最新文章

  1. 湖北大学校长计算机考研复试分数线,湖北大学考研复试分数线
  2. 可控硅g极电阻值计算_可控硅的作用介绍及检测方法
  3. 【Leetcode】EASY题解....ing python
  4. qstring截取一段字符串_笔记 | 自学Python 05:数据类型之字符串
  5. RubyMine 1.0加入Ruby IDE大家庭
  6. python中值滤波介绍_Python 实现中值滤波、均值滤波的方法
  7. java某个起点出发的最长路径_【leetcode-动态规划】矩阵中的最长递增路径
  8. 分布式事务之TCC服务设计和实现注意事项!
  9. 下载配置Gradle
  10. perl-我的第一个程序
  11. SQL注入之万能密码
  12. 浙大吴飞与贾扬清经典十问!
  13. 开网店应该如何不用自己发货呢?
  14. Python基本数据类型大集合
  15. 网易云信助力兴趣社交头部玩家,【微光】打造在线交友电影院
  16. 麒麟v10 sp1 桌面系统分辨率调整
  17. Android 移动动画- TranslateAnimation
  18. MySQL 计算环比(同比类似)
  19. 三个死刑犯的自白,哪个最牛?
  20. 成品油公司注册之柴油的馏程和特性

热门文章

  1. 你为何如此优秀?| 神策数据 2018 年获奖集锦
  2. 睡还是被睡,这是一个问题!
  3. Eclipse配置注释模板的方法
  4. 关闭Eclipse的控制台console自动跳出
  5. 关于Java中何时使用static和工具类相关知识
  6. DPM2010恢复exchange2010单个用户邮箱邮件
  7. .NET中如何通过文本框中按回车键进行的提交数据
  8. 新瓶旧酒ASP.NET AJAX(6) - 客户端脚本编程
  9. DebootstrapChroot
  10. hide subscribers is a good approach if you have a very limited subscribers