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;
    }
  • 相关阅读:
    Android UI 如何让TextView中的文字居中显示
    Android日志服务例子,将日志保存在文件中并每天产生一个日志文件
    Android 获取屏幕尺寸与密度
    Android 学习Tabhost
    Android与服务器端数据交互(http协议整合struts2+android)
    Android的计量单位px,in,mm,pt,dp,dip,sp
    Java struts2中StrutsPrepareAndExecuteFilter 异常
    Http Module 介绍
    Http 请求处理流程
    HttpRuntime2
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/4263075.html
Copyright © 2011-2022 走看看