zoukankan      html  css  js  c++  java
  • Vijos p1303导弹拦截(LIS+贪心)

    传送门:https://vijos.org/p/1303


    背景

    实中编程者联盟为了培养技术精湛的后备人才,必须从基础题開始训练。

    描写叙述

    某国为了防御敌国的导弹突击,研发出一种导弹拦截系统。

    可是这样的导弹拦截系统有一个缺陷:尽管它的第一发炮弹可以到达随意的高度,可是以后每一发炮弹都不能高于前一发的高度。

    某天,雷达捕捉到敌国的导弹来袭。因为该系统还在试验阶段,所以仅仅有一套系统,因此有可能不能拦截全部的导弹。

    格式

    输入格式

    输入数据仅仅有一行,该行包括若干个数据,之间用半角逗号隔开。表示导弹依次飞来的高度(导弹最多有 20 枚,其高度为不大于 30000 的正整数)。

    输出格式

    输出数据仅仅有一行,该行包括两个数据,之间用半角逗号隔开。第一个数据表示这套系统最多能拦截的导弹数。第二个数据表示若要拦截全部导弹至少要再加入多少套这种系统。

    例子1

    例子输入1

    389,207,155,300,299,170,158,65

    例子输出1

    6,1


    思路:LIS,写成这样也是醉了。姿势不够啊。水题1A。第二问就是贪心了,每次选择已有的最小高度,最大的都不够的时候,就加入系统。


    代码:


    /*
        author:Ac_sorry
        problem:导弹拦截
    */
    
    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<vector>
    #include<algorithm>
    #include<climits>
    #define INF INT_MAX
    using namespace std;
    
    int a[50];
    int dp[50];
    
    int main()
    {
        int cnt=0;
        scanf("%d",&a[cnt++]);
        while(scanf(",%d",&a[cnt])==1)
        {
            cnt++;
        }
        //printf("%d----
    ",cnt);
        memset(dp,0,sizeof dp);
        dp[0]=1;
        for(int i=1;i<cnt;i++)
        {
            int maxx=0;
            for(int j=0;j<i;j++)
            {
                if(a[i]<a[j]&&dp[j]>maxx)
                    maxx=dp[j];
            }
            dp[i]=maxx+1;
        }
        vector<int> ans;
        for(int i=0;i<cnt;i++)
        {
            int minn=300000,pos=-1;
            for(int j=0;j<ans.size();j++)
            {
                if(ans[j]<minn&&ans[j]>=a[i])
                {
                    minn=ans[j];
                    pos=j;
                }
            }
            if(pos==-1)
                ans.push_back(a[i]);
            else
                ans[pos]=a[i];
        }
        int maxx=0;
        for(int i=0;i<cnt;i++)
        {
            maxx=max(dp[i],maxx);
        }
        printf("%d,%d
    ",maxx,ans.size()-1);
    
        return 0;
    }
    




  • 相关阅读:
    JMeter使用正则表达式提取相应信息
    Python的configparser生成配置文件,以及相关操作
    Python函数主要的作用
    Python函数传参位置关系总结
    Python中的作用域
    Python高阶函数解析
    Python中set集合的增加,update和add的区别
    Oracle 11g服务详细介绍及哪些服务是必须开启的?
    javacc jjtree 写法 以及 jj写法 基本语法 以及应用
    Python 3.3 try catch所有的错误Error,不包括Exception。关键在于 sys.exc_info()
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7352635.html
Copyright © 2011-2022 走看看