动态规划之——又见拦截导弹(nyoj814)
问题描述:
又见拦截导弹
- 描述
-
大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度。突然有一天,雷达捕捉到敌国的导弹来袭。由于该系统存在缺陷,所以如果想把所有的导弹都拦截下来,就要多准备几套这样的导弹拦截系统。但是由于该系统成本太高,所以为了降低成本,请你计算一下最少需要多少套拦截系统。
- 输入
-
有多组测试数据。
每组数据先输入一个整数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)相关推荐
- YTU_3137: 动态规划基础题目之拦截导弹
Description 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕 ...
- 动态规划之——拦截导弹(nyoj79)
问题描述: 拦截导弹 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮 ...
- 牛客:【2021秋季算法入门班第七章习题:动态规划1】部分题解:方块与收纳盒、舔狗舔到最后一无所有、可爱の星空、[NOIP1999]拦截导弹
题单链接:牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com) P1001 方块与收纳盒 传送门:1001-方块与收纳盒_2021秋季 ...
- 详解拦截导弹问题(动态规划)
题目 拦截导弹 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹,拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌 ...
- 1044 拦截导弹——http://codevs.cn/problem/1044/
第一部分:题目 题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于 ...
- BZOJ 2244: [SDOI2011]拦截导弹 DP+CDQ分治
2244: [SDOI2011]拦截导弹 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度.并且能够拦截 ...
- BZOJ - 2244 拦截导弹 (dp,CDQ分治+树状数组优化)
BZOJ - 2244 拦截导弹 (dp,CDQ分治+树状数组优化) 1 #include<algorithm> 2 #include<iostream> 3 #include ...
- BZOJ2244 [SDOI2011]拦截导弹 【cdq分治 + 树状数组】
题目 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度.并且能够拦截任意速度的导弹,但是以后每一发炮弹都不能高于前一发的高度,其 ...
- NYOJ 79 拦截导弹
拦截导弹 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任 ...
最新文章
- 湖北大学校长计算机考研复试分数线,湖北大学考研复试分数线
- 可控硅g极电阻值计算_可控硅的作用介绍及检测方法
- 【Leetcode】EASY题解....ing python
- qstring截取一段字符串_笔记 | 自学Python 05:数据类型之字符串
- RubyMine 1.0加入Ruby IDE大家庭
- python中值滤波介绍_Python 实现中值滤波、均值滤波的方法
- java某个起点出发的最长路径_【leetcode-动态规划】矩阵中的最长递增路径
- 分布式事务之TCC服务设计和实现注意事项!
- 下载配置Gradle
- perl-我的第一个程序
- SQL注入之万能密码
- 浙大吴飞与贾扬清经典十问!
- 开网店应该如何不用自己发货呢?
- Python基本数据类型大集合
- 网易云信助力兴趣社交头部玩家,【微光】打造在线交友电影院
- 麒麟v10 sp1 桌面系统分辨率调整
- Android 移动动画- TranslateAnimation
- MySQL 计算环比(同比类似)
- 三个死刑犯的自白,哪个最牛?
- 成品油公司注册之柴油的馏程和特性
热门文章
- 你为何如此优秀?| 神策数据 2018 年获奖集锦
- 睡还是被睡,这是一个问题!
- Eclipse配置注释模板的方法
- 关闭Eclipse的控制台console自动跳出
- 关于Java中何时使用static和工具类相关知识
- DPM2010恢复exchange2010单个用户邮箱邮件
- .NET中如何通过文本框中按回车键进行的提交数据
- 新瓶旧酒ASP.NET AJAX(6) - 客户端脚本编程
- DebootstrapChroot
- hide subscribers is a good approach if you have a very limited subscribers