某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
Input
输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
Output
对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
Sample Input
8 389 207 155 300 299 170 158 65
Sample Output
2

//L hdu1257 贪心
/*
题目大意:拦截导弹,但每次拦截的导弹高度不能高于上一次所拦截的导弹,如果不能拦截,只能新开一个拦截系统
问最少需要多少套拦截系统。
题目分析:一般这种有最多最少之类的都可以考虑贪心策略
现在假如要拦截一个导弹,而你有3套拦截系统,都可以拦截它,为了节省你会用哪套?
肯定是使用拦截高度最低的那套,因为剩下的两套,或许还可以拦截再后面的导弹。
如果3套里面只有2套可以拦截它,那就用2套里面拦截高度最低的那套,理由同上。
*/
#include
using namespace std;
int a[1005],b[1005]; //a记录导弹,b记录已经拥有的拦截系统最高可以拦截多高的导弹
int main(){
int n;
while(~scanf("%d",&n))
{
int ans=0;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
b[i]=0; //初始化b的值
}
for(int i=0;i<n;i++){ //遍历所有导弹
int min=30005,k=-1; //min用来记录最低的拦截系统的拦截高度,k用来记录是哪套系统
for(int j=0;j<ans;j++){ //遍历已经有的拦截系统,更新min和k的值
if(b[j]>a[i]&&b[i]-a[i]<min){
k=j; min=b[i]-a[i];
}
}
if(k!=-1) b[k]=a[i]; //k不等于-1,说明有合适的拦截系统,拦截更新系统的值为这一发导弹的值
else b[ans++]=a[i]; //k仍然等于-1,说明没有任何一套可以拦截,只能新开一个拦截系统,ans++,新开系统的拦截高度即为这发导弹高度
}
printf("%d\n",ans);
}
return 0;
}

贪心算法(导弹系统)相关推荐

  1. 算法设计与分析第3章 贪心算法

    第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...

  2. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...

    问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...

  3. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

  4. 一份贪心算法区间调度问题解法攻略,拿走不谢

    作者 | labuladong 来源 | labuladong(ID:labuladong) [导读]什么是贪心算法呢?贪心算法可以认为是动态规划算法的一个特例,相比动态规划,使用贪心算法需要满足更多 ...

  5. 漫画:五分钟学会贪心算法!

    假设一个问题比较复杂,暂时找不到全局最优解,那么我们可以考虑把原问题拆成几个小问题(分而治之思想),分别求每个小问题的最优解,再把这些"局部最优解"叠起来,就"当作&qu ...

  6. 下载插件(贪心算法)

    小扣打算给自己的 VS code 安装使用插件,初始状态下带宽每分钟可以完成 1 个插件的下载.假定每分钟选择以下两种策略之一: 使用当前带宽下载插件 将带宽加倍(下载插件数量随之加倍) 请返回小扣完 ...

  7. Runnable接口和贪心算法

    1 Runnable接口 Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现.设计该接口的目的是为希望在活动时执行代码的对象提供一个公共协议.激活的意思是说某个线程已启动并且尚未停止 ...

  8. 拜托,别再问我贪心算法了!

    来自:码海 前言 上篇一文学会动态规划解题技巧 被不少号转载了,其中发现有一位读者提了一个疑惑,在求三角形最短路径和时,能否用贪心算法求解.所以本文打算对贪心算法进行简单地介绍,介绍完之后我们再来看看 ...

  9. Dijkstra 贪心算法 动态规划

    我认为 Dijkstra算法 的本质是 广度优先搜索, 而此处的广度是定义在路程的cost之上的. (就好比从圆心处向外扩散一个圆环,首次碰到的就是最近) 动态规划泛指,重叠子问题与原问题的推算关系( ...

  10. 三十六、贪心算法--集合覆盖问题

    一.贪心算法介绍 1.贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解 2.贪心算法不是对所有问题都 ...

最新文章

  1. 闪电模型数学_初中数学|23种几何模型汇总(中)
  2. 计算机无法正常更新,无法完成更新正在撤销更改请不要关闭你的计算机如何修复...
  3. Knockout学习笔记之二($root,$parent及$data的区别)
  4. Python PyCharm利用PyQt5使QPlainTextEdit支持拖放文件,类提升,重写QPlainTextEdit类
  5. 10次课( find命令、文件名后缀)
  6. golang语言中的关于err的函数封装事项的函数使用
  7. VS2010调试——“StdAfx.h“文件打不开
  8. 爱剪辑手机版 v51.0 至尊内购专业破解版的视频剪辑软件
  9. ESP32音频框架 ESP-ADF 添加按键外设流程代码跟踪
  10. 迅歌KTV服务器各型号,十大ktv必点歌曲排行榜 ktv点唱率最高的十首歌榜单公布...
  11. 阿里云服务器一年多少钱?阿里云企业级云服务器报价表
  12. 分数四则运算 python
  13. 【转】HDMI、DVI接口差异之解析
  14. ES2015中let的暂时性死区(TDZ)
  15. 用Python做一个超简单的小游戏(一听就懂)
  16. MakeMKV for mac(MKV视频格式转换工具)
  17. java计算器sqrt_比较完整的Java计算器
  18. 腾讯面试题:买200返100优惠券,实际上折扣是多少?
  19. c语言中的比较大小问题
  20. 大白话讲解Vue前端框架

热门文章

  1. xgb的简单使用(特征选择,重要性图像绘制,分类,预测)
  2. Redis使用实例(RedisHelper)
  3. 新手站长小白该如何选择云服务器配置?
  4. 安装OpenCV、cython、numpy和h5py
  5. 十九、SpringBoot关掉druid监控
  6. FPGA——study1_testbench激励
  7. 无限级别联动,怎样才能做活?
  8. Java中的SSM框架指的什么?有哪些优点?
  9. Skype for Business
  10. Java 实现递归算法(项目中的简单例子)