zoukankan      html  css  js  c++  java
  • LIS 最长单调子序列模板

    namespace LIS
    
    {
    
    template <class  T>
    
    int lis(vector<T> v)
    
    {
    
        if(v.empty())return 0;
    
        vector<T> d;
    
        for(int i=0;i<v.size();i++)
    
        {
    
            int l=0,r=d.size(),m=0;
    
            while(l<r)
    
            {
    
                m=(l+r)/2;
    
                if(!(v[i]<d[m])) l=m+1;
    
                else r=m;
    
            }
    
            if(l==d.size())
    
                d.push_back(v[i]);
    
            else d[l]=v[i];
    
        }
    
        for(int i=0;i<d.size();i++)
    
            cout<<d[i]<<' ';
    
        return d.size();
    
    }
    
    template <class T,class C>
    
        int lis(vector<T> v,C cmp)
    
        {
    
            if(v.empty())return 0;
    
            vector<T> d;
    
            for(int i=0;i<v.size();i++)
    
            {
    
                int l=0,r=d.size(),m=0;
    
                while(l<r)
    
                {
    
                    m=(l+r)/2;
    
                    if(!cmp(v[i],d[m])) l=m+1;
    
                    else r=m;
    
                }
    
                if(l==d.size())
    
                    d.push_back(v[i]);
    
                else d[l]=v[i];
    
            }
    
            return d.size();
    
        }
    
    }
    
     
  • 相关阅读:
    4.18下午
    4.18上午
    2017.5.10-afternoon
    2017.5.9-afternoon
    2017.5.10-morning
    2017.5.9-morning
    2017.5.8-afternoon
    2017.5.8-morning
    2017.5.5-afternoon
    2017.5.5-morning
  • 原文地址:https://www.cnblogs.com/goagain/p/3157901.html
Copyright © 2011-2022 走看看