导弹拦截之测试版(1163)
来源:互联网 发布:淘宝长图 编辑:程序博客网 时间:2024/06/16 11:26
导弹拦截之测试版(1163)
Time limit(ms): 1000
Memory limit(kb): 10000
Submission: 2556
Accepted: 965
Accepted
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹。
Description
多组测试数据;
对于每组数据共有两行:
第一行一个n,表示导弹个数;
第二行表示每颗导弹的高度,以空格隔开 。
对于每组数据共有两行:
第一行一个n,表示导弹个数;
第二行表示每颗导弹的高度,以空格隔开 。
Input
每组数据一行,输出最多能拦截导弹数目;
Output
1
2
3
8
389 207 155 300 299 170 158 65
Sample Input
1
6
#include<stdio.h>int n,a[1000];int b[1000];int top;int find(int x){ int l=0,r=top; int mid; while(r>=l) { mid=(l+r)/2; if(x>=b[mid]) { l=mid+1; } else r=mid-1; } return l;}int main(){ while(~scanf("%d",&n)) { for(int i=0;i<n;i++) { scanf("%d",&a[i]); } top=0; b[0]=a[n-1]; for(int i=n-2;i>=0;i--) { if(a[i]>=b[top]) { b[++top]=a[i]; } else b[find(a[i])]=a[i]; } printf("%d\r\n",top+1); } return 0; }
阅读全文
0 0
- 导弹拦截之测试版(1163)
- 导弹拦截之升级版(1164)
- 动态规划之拦截导弹
- 动态规划之导弹拦截
- 拦截导弹
- 拦截导弹
- 拦截导弹
- 拦截导弹
- 导弹拦截
- 导弹拦截
- 拦截导弹
- 拦截导弹
- 拦截导弹
- 拦截导弹
- 拦截导弹
- 拦截导弹
- 拦截导弹
- 拦截导弹
- 记一次小米2S的刷机过程
- 获取之前发布的webService服务
- cjqyzUsers
- Hello_World 我的学习路线
- Redis学习笔记——(三)Redis集群安装
- 导弹拦截之测试版(1163)
- 您不知道的 5 件事... Java 对象序列化
- 不定期更新一些常见/不常见的缩写全称
- C++ extern(1) extern的用处
- 互斥体与信号量的对比
- 【Django】启动Python的两种方式
- linux pidmap_init
- 高精度乘法
- 第五届图灵杯1865