zoukankan      html  css  js  c++  java
  • 导弹拦截版

    题目描述

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

    输入导弹依次飞来的高度(雷达给出的高度数据是不大于50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

    输入输出格式

    输入格式:

    一行,若干个整数(个数少于100000)

    输出格式:

    2行,每行一个整数,第一个数字表示这套系统最多能拦截多少导弹,第二个数字表示如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

    // luogu-judger-enable-o2
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int i,j,k,x,n,maxx,m,a[10000],b[10000],h[10000];
    int main()
    {
    	i=1;
    	while(~scanf("%d",&a[i]))
    	{
    		maxx=0;
    		for(j=1;j<=i-1;j++)
    		{
    			if(a[j]>=a[i])
    			{
    				if(b[j]>maxx)
    				{
    					maxx=b[j];
    				}
    			}
    		}
    		b[i]=maxx+1;
    		if(b[i]>m)
    		{
    			m=b[i];
    		}
    		x=0;
    		for(k=1;k<=n;k++)
    		{
    			if(h[k]>=a[i])
    			{
    				if(x==0)
    				{
    					x=k;
    				}
    				else
    				{
    					if(h[k]<h[x])
    					{
    						x=k;
    					}
    				}
    			}
    		}
    		if(x==0)
    		{
    			n++;
    			x=n;
    		}
    		h[x]=a[i];
    		i++;
    	}
    	cout<<m<<endl;
    	cout<<n;
    }


  • 相关阅读:
    C++引用小结
    C++关于const的使用以及理解
    python购物车程序的简单程序优化版
    C++文件操作
    python购物车简单小程序
    python学习DAY3(列表)
    C++重载双目运算符(2)(对象与数之间)
    C++重载双目运算符(1)(对象与对象之间)
    C++重载单目运算符
    Elasticsearch 添加数据
  • 原文地址:https://www.cnblogs.com/ztz11/p/9189980.html
Copyright © 2011-2022 走看看