• LIS (nlogn)的算法


    len[ i ] 代表长度为i的子串的最小结尾的数

    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    int a[100000];
    int len[100000];
    int main()
    {
         int n,i;
         while(scanf("%d",&n)!=EOF)
         {
              for(i=1;i<=n;i++)
                   scanf("%d",&a[i]);
                   int number=0;
                   for(i=1;i<=n;i++)
                   {
                        if(i==1)
                             len[++number]=a[i];
                        else if(a[i]>len[number])
                             len[++number]=a[i];
                        else
                        {
                             int temp=lower_bound(len+1,len+number+1,a[i])-len;
                             len[temp]=a[i];
                        }
                   }
                   printf("%d
    ",number);
         }
         return 0;
    }
  • 相关阅读:
    最大流问题的几种经典解法综述
    有上下界的网络流
    hiho一下
    poj 1018
    状压dp
    hdu 1043
    Poj1015
    7.14
    sgu 128
    (zhuan)
  • 原文地址:https://www.cnblogs.com/llei1573/p/3249166.html
Copyright © 2020-2023  润新知