zoukankan      html  css  js  c++  java
  • 对lis问题的回顾

    lis有复杂度哦(n*log(n))的算法

    实质就是维护一个答案序列 将每次更优的的放在应该在的地方

    下面是求严格递增的lis

    #include<cstring>
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int a[100005];
    int dp[100005];
    int ans[100005];
    int main()
    {
        int cas=0;
        int n;
        scanf("%d",&n);
        for(int i=1; i<=n; i++)
        {
            scanf("%d",&a[i]);
        }
        ans[1]=a[1];
        int len=1;
        for(int i=2; i<=n; i++)
        {
            if(a[i]>ans[len])
            {
                ans[++len]=a[i];
            }
            else
            {
                int pos=lower_bound(ans+1,ans+1+len,a[i])-ans;
                ans[pos]=a[i];
            }
        }printf("%d
    ",len);
    }
    

    附上求非严格递增的lis

    #include<cstring>
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int a[100005];
    int dp[100005];
    int ans[100005];
    int main()
    {
        int cas=0;
        int n;
        scanf("%d",&n);
        for(int i=1; i<=n; i++)
        {
            scanf("%d",&a[i]);
        }
        ans[1]=a[1];
        int len=1;
        for(int i=2; i<=n; i++)
        {
            if(a[i]>=ans[len])
            {
                ans[++len]=a[i];
            }
            else
            {
                int pos=upper_bound(ans+1,ans+1+len,a[i])-ans;
                ans[pos]=a[i];
            }
        }printf("%d
    ",len);
    }
    
  • 相关阅读:
    松翰单片机_SN8F570310——INTR
    松翰单片机_SN8F570310——EINT
    松翰单片机_SN8F570310——PWM
    松翰单片机_SN8F570310——SPI
    松翰单片机_SN8F570310——IIC
    松翰单片机_SN8F570310——UART
    全志_input
    全志_ADC驱动
    git随笔
    全志_外部中断
  • 原文地址:https://www.cnblogs.com/caowenbo/p/11852300.html
Copyright © 2011-2022 走看看