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;
    }
  • 相关阅读:
    COGS 2104. [NOIP2015]神奇的幻方
    洛谷 P1387 最大正方形
    包和一些常用的模块
    模块
    模块的导入和使用
    函数迭代器与生成器
    函数的小知识
    函数的闭包和装饰器
    函数的进阶
    初识函数
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/4263075.html
Copyright © 2011-2022 走看看