拦截导弹问题(NOIP1999)

简介: 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段。

某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,

但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段。所以一套系统有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度不大于30000的正整数)。计算要拦截所有导弹最小需要配备多少套这种导弹拦截系统。
【输入格式】
n颗依次飞来的高度(1≤n≤1000).
【输出格式】
要拦截所有导弹最小配备的系统数k。
【输入样例】missile.in
389 207 155 300 299 170 158 65
【输出样例】missile.out
2
【输入输出样例】
输入:导弹高度: 7 9 6 8 5
输出:导弹拦截系统K=2
输入:导弹高度: 4 3 2
输出:导弹拦截系统K=1

 

 1 #include <stdio.h>
 2 int main()
 3 {
 4     int a[1005],k;
 5     int h,i,j;
 6     int minI,first;
 7     freopen("missile.in","r",stdin);
 8     freopen("missile.out","w",stdout);
 9     scanf("%d",&h);  //第1枚导弹的高度 
10     k=0;
11     a[k]=h;
12     while(scanf("%d",&h)==1)    //while(cin>>h)
13     {
14         first=1;
15         for(i=0;i<=k;i++)  //扫描现有的系统,寻找看是否有可用的系统 
16         {
17             if(a[i]>=h)    //可用使用a[i]来拦截 
18             {
19                 if(first==1) {minI=i;first=0;}  //首次发现可用的系统 
20                 else if(a[i]<a[minI]) minI=i;
21             }
22         }
23         if(first==0)
24             a[minI]=h;   //使用现有的系统来拦截 
25         else 
26         {
27             k++;
28             a[k]=h;      //新增加一套系统来拦截 
29         }
30     }
31     printf("%d\n",k+1);
32     return 0;
33 }

 

相关文章
|
3月前
【洛谷 P1307】[NOIP2011 普及组] 数字反转 题解(取余)
NOIP2011普及组试题,要求反转整数N的位得到新数,保持正负号和非零最高位。输入一个整数N,输出反转后的新数。样例输入1:123,输出:321;样例输入2:-380,输出:-83。代码使用取余法实现,处理负数时保留符号。
22 0
|
3月前
【洛谷 P1980】[NOIP2013 普及组] 计数问题 题解(取余)
NOIP2013普及组计数问题,求区间[1, n]内数字x出现的次数。输入为n和x,输出x的出现次数。样例输入11 1,输出4。代码通过逐位检查每个数是否等于x来计数,适用于$n\leq10^6$,$0\leq x\leq 9$的情况。
31 0
|
3月前
|
C++
【洛谷 P1307】[NOIP2011 普及组] 数字反转 题解(字符串)
**NOIP2011普及组题目:给定整数N,反转其位得到新数。新数首位非0(除非N=0)。输入0时直接输出0,其他情况输出反转后的数,考虑负数及前导0。提供的C++代码实现通过读入字符串,反转数字顺序并处理符号和前导0。**
23 0
|
3月前
|
C++
【洛谷 P1085】[NOIP2004 普及组] 不高兴的津津 题解(打擂台法)
**NOIP2004 普及组问题:津津的日程检查。津津每日上课时间若超8小时会不高兴。输入7行代表一周课程,输出最不高兴的日期(1-7)或0。示例输入/输出:5 3 6 2 7 2 5 3 5 4 0 4 0 6 -&gt; 3。使用C++代码通过遍历计算最大上课时间并找到对应日期。**
25 0
|
3月前
|
存储 C++
【洛谷 P1089】[NOIP2004 提高组] 津津的储蓄计划 题解(循环)
**摘要:** 这是一个关于编程竞赛题目的摘要,题目编号NOIP2004提高组,名为“津津的储蓄计划”。津津每月初从妈妈那里获得300元,需要根据预算决定储蓄。若预计月底有超过或正好100元,她会存储整百金额。如果某月资金不足预算,输出第一个这样的月份加负号;否则,计算年末时津津手中的总金额(储蓄部分加20%)。输入是12个月的预算,输出是一个整数结果。提供的C++代码示例用于处理这个问题,通过迭代计算每个月的资金状况。样例输入和输出展示了不同情况下的结果。
25 0
|
12月前
[NOIP1998]拼数
[NOIP1998]拼数
|
12月前
[NOIP2015]跳石头
[NOIP2015]跳石头
|
定位技术 C++
洛谷P1600 [NOIP2016 提高组] 天天爱跑步
洛谷P1600 [NOIP2016 提高组] 天天爱跑步
1260:【例9.4】拦截导弹(Noip1999) 2021-01-15
1260:【例9.4】拦截导弹(Noip1999) 2021-01-15
127 0
1309:【例1.6】回文数(Noip1999)
1309:【例1.6】回文数(Noip1999)
139 0