算法训练 拦截导弹
2017-04-09 19:10
148 查看
算法训练 拦截导弹
时间限制:1.0s 内存限制:256.0MB
提交此题 锦囊1 锦囊2
问题描述
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
输入格式
一行,为导弹依次飞来的高度
输出格式
两行,分别是最多能拦截的导弹数与要拦截所有导弹最少要配备的系统数
样例输入
389 207 155 300 299 170 158 65
样例输出
6
2
以前写过一个最长上升子序列的题目,感觉类似
最长上升子序列
//分析
//计算这套系统最多能拦截多少导弹,此问题就是求最长下降子序列的长度
//如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。此问题是求最少下降子序列的个数。
//方法。类似,DILWORTH定理。
时间限制: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; }
相关文章推荐
- 算法训练 拦截导弹
- 蓝桥网 算法训练 拦截导弹
- 拦截导弹 蓝桥杯算法训练 Java
- 蓝桥杯 算法训练 拦截导弹
- 算法训练 拦截导弹
- 算法训练 拦截导弹
- 算法训练 拦截导弹
- 算法训练 拦截导弹
- 蓝桥杯算法训练拦截导弹【最长上升子序列 & 最长非下降子序列nlogn 和 n^2】
- java实现算法设计之导弹拦截
- 机试算法讲解:第50题 动态规划之拦截导弹
- PKU暑期训练02.拦截导弹
- BZOJ[2044]三维导弹拦截 匈牙利算法
- 题目1112:拦截导弹
- 算法训练 9-7链表数据求和操作
- 蓝桥杯-算法训练-数字三角形
- 蓝桥杯- 算法训练-Beaver's Calculator
- 算法训练 和为T
- [NOIP1999]导弹拦截NlogN做法
- 算法训练 寻找数组中最大值