算法训练 拦截导弹
来源:互联网 发布:bcm57810驱动 linux 编辑:程序博客网 时间:2024/06/05 17:35
算法训练 拦截导弹
时间限制:1.0s 内存限制:256.0MB
提交此题 锦囊1 锦囊2
问题描述
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
输入格式
一行,为导弹依次飞来的高度
输出格式
两行,分别是最多能拦截的导弹数与要拦截所有导弹最少要配备的系统数
样例输入
389 207 155 300 299 170 158 65
样例输出
6
2
以前写过一个最长上升子序列的题目,感觉类似
最长上升子序列
//分析
//计算这套系统最多能拦截多少导弹,此问题就是求最长下降子序列的长度
//如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。此问题是求最少下降子序列的个数。
//方法。类似,DILWORTH定理。
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int a[10000];int b[10000];int main(){ int num; int index=0; char c; int maxi=-1,maxnum=-1; int to=0; for (int i=0;i<1000;i++) { a[i]=30003; } while(scanf("%d%c",&num,&c)) { for(int i=0;i<1000;i++)//最长下降子序列的长度 { if (num>b[i]) { b[i]=num; if (maxnum<i) { maxnum=i; } break; } } for (int i=0;i<10000;i++)//最少下降子序列的个数 { if (num<a[i]) { a[i]=num; if (maxi<i) { maxi=i; } break; } } if (c=='\n') break; } cout<<maxnum+1<<endl; cout<<maxi+1; return 0;}
0 0
- 算法训练 拦截导弹
- 算法训练 拦截导弹
- 算法训练 拦截导弹
- 算法训练 拦截导弹
- 算法训练 拦截导弹
- 蓝桥网 算法训练 拦截导弹
- 蓝桥杯 算法训练 拦截导弹
- 算法训练 拦截导弹(动态规划)
- 拦截导弹 蓝桥杯算法训练 Java
- 蓝桥杯 ALGO-13 算法训练 拦截导弹 Java版
- 算法:拦截导弹
- PKU暑期训练02.拦截导弹
- 导弹拦截题解+优化算法
- 蓝桥杯 算法训练 拦截导弹 By Assassin [最长下降子序列nlogn]
- 蓝桥杯 算法训练 拦截导弹【最长上升子序列 & 最长非下降子序列 nlogn 和 n^2】
- java实现算法设计之导弹拦截
- 拦截导弹问题(贪心算法)
- C++动态规划算法之拦截导弹
- Leetcode 103. Binary Tree Zigzag Level Order Traversal( C++版)
- ajax
- 尽量让这个知识的网络有一个干净的空间
- 面试题(八)
- Metasploit连接数据库失败
- 算法训练 拦截导弹
- 【Oracle学习】之 数据库对象的创建与管理
- 分巧克力
- spring核心框架体系结构(各个jar包作用)
- 记录Gradle学习
- Makefile文件编写
- 操作系统作业04
- poj3749 破译密码
- ASCII、Unicode和UTF-8编码的区别;中英文混合截取