/*某国为了防御敌国的导弹袭击,研发出一套导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发拦截
炮弹能够到达任意的高度,但是以后每一发拦截炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的多枚导弹来
袭。
/
输入描述

输入的第一行为导弹的个数n (0<n<10000),接下来的一行为导弹依次飞来的高度h(不大于
30000 的正整数)

输出描述
输出最多拦截的导弹个数。
输入样例
6
5 3 2 4 1 3
输出样例
4*/
 1. n^2的
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int b[305];
int n, a[3005], sum = 0;
int dp[305];

int main(){
    int j = 0, min;
    cin >> n;
    
    for(int i = 0; i < n; i++)
        cin >> a[i];
    for(int i = 1; i < n; i++){
        dp[0] = 1;
        for(int j = 0; j < i; j++){
            if(a[j] <= a[i] && dp[j] + 1 > dp[i]){
//                b[i] = a[j];
                dp[i] = dp[j] + 1;    
            }
        }
//        cout << b[i] << " ";
//        cout << dp[i] << " ";
    }
    min = dp[0];
    for(int i = 1; i < n; i++)
        if(min < dp[i])
            min = dp[i];
    cout << min;
    return 0;
}

2.下面是nlogn

#include <iostream>
using namespace std;

int search(int s, int *g, int low, int high){
    int mid = 1;
    while(low < high){
        mid = (low + high) / 2;
        if(g[mid] <= s)
            low = mid + 1;
        else
            high = mid;
    }
    return low;
}

int main(){
    int g[305], a[305], n;
    cin >> n;
    
    for(int i = 0; i < n; ++i)
        cin >> a[i];
    g[1] = a[0];
    int len = 1, j = 0;
    for(int i = 1; i < n; i++){
        if(g[len] < a[i])     //如果a[i]比g的最后一个数组小就直接插在后面
            j = ++len;
        else                                
//            j = search(a[i], g, 1, ++len);   // (注意:这种情况长度不变,不能写成++len)
            j = search(a[i], g, 1, len + 1); //  否则就插在g中比a[i]大的数中最小的那个数的位置即替换他
        g[j] = a[i];                         //用二分找的插入的位置                                
//        cout << j << " "; //打印的是每次a[i]加入g 数组的位置(从1开始存入的)
    }
    cout << len;
    return 0;
}

8-导弹拦截一(n^2 and nlogn)的更多相关文章

  1. 【题解】P1020 导弹拦截

    [题解]P1020 导弹拦截 从n^2到nlogn 第二问就是贪心,不多说 第一问: 简化题意:求最长不下降子序列 普通n^2: for (int i = 1; i <= n; i++) for ...

  2. P1020 导弹拦截(nlogn求最长不下降子序列)

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  3. 【dp】导弹拦截

    题目链接 https://www.luogu.org/problemnew/show/P1020 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的 ...

  4. P1020 导弹拦截 dp 树状数组维护最长升序列

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  5. 导弹拦截与Dilworth定理

    这两天被Dilworth.链和反链搞到头昏脑胀,终于有点眉目,现在来总结一下. Dilworth定理说的是:对于一个偏序集,其最少链划分数等于其最长反链的长度. Dilworth定理的对偶定理说的是: ...

  6. [dp][uestc oj][最长上升子序列] LIS N - 导弹拦截

    N - 导弹拦截 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  7. Luogu-P1020(导弹拦截)(DP,LIS ,二分优化)

    Luogu-P1020(导弹拦截)(DP) 题意: 给n(n<=100000) 个数字,求最长不上升子序列的长度和最少的不上升子序列的个数. 分析: 第一问: 求最长不上升子序列有 O(n^2) ...

  8. luoguP1020 导弹拦截

    题意 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国 ...

  9. 洛谷 P1020导弹拦截题解

    洛谷链接:https://www.luogu.org/problem/P1020 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到 ...

  10. luogu P1020 导弹拦截 x

    首先上题目~ luogu P1020 导弹拦截 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都 ...

随机推荐

  1. 对于入门Demo的看法

    对于一些以前没有接触过的技术,网上一搜,了解一些介绍信息,原理以及一些代码API的大致了解,接下来应该开始一个小Demo例子. 网上现在好多的教材,多数不知是怎么写的,基本大致一个样,对于初学者没什么 ...

  2. ECCV 2018 | Bi-Real net:超XNOR-net 10%的ImageNet分类精度

    这项工作由香港科技大学,腾讯 AI lab,以及华中科技大学合作完成,目的是提升二值化卷积神经网络(1-bit CNN)的精度.虽然 1-bit CNN 压缩程度高,但是其当前在大数据集上的分类精度与 ...

  3. solr 通过【配置、多值字段、动态字段】来解决文本表达式查询精确到句子的问题

    一.Solr Multivalue field属性positionIncrementGap理解 分类:Lucene 2014-01-22 10:39阅读(3596)评论(0) 参考:http://ro ...

  4. CSS个人笔记

    1. CSS盒模型 1.1 控制元素尺寸属性 1.1.1 box-sizing: 改变元素应用的尺寸规则 当设置元素尺寸宽度为固定值时(eg: 100px), 其实是元素内容区域的宽度为100px, ...

  5. 关于THINKPHP5模型关联的初步理解

    初步理解的意思是,使用最常用的关联模型,然后可以正常运行 还是打个比方 文章表  和文章分类表 一个文章分类可以有多个文章  所以  文章分类模型和文章建立 hasMany的关联 而文章和文章分类表则 ...

  6. 数据库2.0改进e-r图

    1.新建教师实体集并将1.0中的任课教师,教务老师归类为教师. 2.将实体集考勤表设置为弱实体集. 3.将学生与考勤表的关系由属于关系设置为出勤关系. 4.出勤关系中设置出勤记录属性和教师留言属性. ...

  7. HTML5 Canvas 小例子 旋转的图片

    <一>CSS部分 @charset "utf-8"; *{ padding:; margin:; outline: none; } #canvas{ position: ...

  8. Delphi 解析HTML

    uses mshtml; IHTMLEleMent.ID; IHTMLEleMent.tagName; IHTMLEleMent.title;elmt._className;elmt.getAttri ...

  9. DOM0和D0M2级事件

    1.DOM0级事件:on+事件类型 1.1.在html行内直接绑定, 1.2.在js中绑定 A.DOM0级事件和DOM0级事件相互之间会覆盖,比如以下代码执行后弹出jsDOM0级,js中绑定的事件 覆 ...

  10. c++实现贪食蛇

    今天老师布置了作业 让我们观察c++实现贪食蛇的代码 #include<windows.h> #include<time.h> #include<stdlib.h> ...