zoukankan      html  css  js  c++  java
  • POJ3903Stock Exchange&&POJ1631Bridging signals最长上升子序列 &&POJ1887Testing the CATCHER(最长下降子序列)(LIS模版题)

    题目链接:http://poj.org/problem?id=3903 

    题目链接:http://poj.org/problem?id=1631

    题目链接:http://poj.org/problem?id=1887

    题目解析:

    这两道题都是直接求最长上升子序列,没什么好说的。

    POJ 3903这题n为1000000,如果用n^2的算法肯定超时,所以要选择nlogn的算法。都是简单题。

    #include <iostream>
    #include <string.h>
    #include <stdio.h>
    #include <algorithm>
    #include <math.h>
    #define eps 1e-9
    using namespace std;
    int n,len,a[100010],d[100010];
    int er(int q[],int l,int r,int key)//好好研究二分
    {
        int mid;
        while(l<=r)
        {
            mid=(l+r)/2;
            if(q[mid]==key)
            {
                return mid;
            }
            else if(q[mid]>key)
            {
                r=mid-1;
            }
            else l=mid+1;
        }
        return l;
    }
    int main()
    {
        int we;
        while(scanf("%d",&n)!=EOF)
        {
            for(int i=1; i<=n; i++)
            {
                scanf("%d",&a[i]);
            }
            len=1;
            d[len]=a[1];
            for(int i=2; i<=n; i++)
            {
                if(a[i]>d[len])
                {
                    d[++len]=a[i];
                }
                else
                {
                    we=er(d,1,len,a[i]);
                    d[we]=a[i];
                }
            }
            printf("%d
    ",len);
        }
        return 0;
    }

    POJ1631:

    #include <iostream>
    #include <string.h>
    #include <stdio.h>
    #include <algorithm>
    #include <math.h>
    #define eps 1e-9
    using namespace std;
    int n,len,a[40010],d[40010];
    int er(int q[],int l,int r,int key)//好好研究二分
    {
        int mid;
        while(l<=r)
        {
            mid=(l+r)/2;
            if(q[mid]==key)
            {
                return mid;
            }
            else if(q[mid]>key)
            {
                r=mid-1;
            }
            else l=mid+1;
        }
        return l;
    }
    int main()
    {
        int we,T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            for(int i=1; i<=n; i++)
            {
                scanf("%d",&a[i]);
            }
            len=1;
            d[len]=a[1];
            for(int i=2; i<=n; i++)
            {
                if(a[i]>d[len])
                {
                    d[++len]=a[i];
                }
                else
                {
                    we=er(d,1,len,a[i]);
                    d[we]=a[i];
                }
            }
            printf("%d
    ",len);
        }
        return 0;
    }
    View Code

    POJ1887Testing the CATCHER:

    #include <iostream>
    #include <string.h>
    #include <stdio.h>
    #include <algorithm>
    #include <math.h>
    using namespace std;
    int n,a[40002],d[40002],len;
    int er(int q[],int l,int r,int key)//好好研究二分
    {
        int mid;
        while(l<=r)
        {
            mid=(l+r)/2;
            if(q[mid]==key)
            {
                return mid;
            }
            else if(q[mid]>key)
            {
                r=mid-1;
            }
            else l=mid+1;
        }
        return l;
    }
    int main()
    {
        int tt,we,K=0;
        while(scanf("%d",&a[1])!=EOF&&a[1]!=-1)
        {
            tt=1;
            while(scanf("%d",&a[++tt])!=EOF&&a[tt]!=-1)
                ;
            tt-=1;
            len=1;
            d[len]=a[tt];
            for(int i=tt-1; i>=1; i--)
            {
                if(a[i]>d[len])
                {
                    d[++len]=a[i];
                }
                else
                {
                    we=er(d,1,len,a[i]);
                    d[we]=a[i];
                }
            }
            printf("Test #%d:
    ",++K);
            printf("  maximum possible interceptions: %d
    
    ",len);
        }
        return 0;
    }
  • 相关阅读:
    BFC是什么?如何形成BFC,有什么作用?
    z-index 有什么作用? 如何使用?
    有几种定位方式?分别是如何实现定位的?参考点是什么?使用场景是什么?
    Promise
    token
    文档碎片
    ECharts常用配置项
    for each()和map()的区别
    window.onload和$(docunment).ready的区别
    密码的两种常用加密方式
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/4263075.html
Copyright © 2011-2022 走看看