namespace LIS

{

template <class  T>

int lis(vector<T> v)

{

    if(v.empty())return ;

    vector<T> d;

    for(int i=;i<v.size();i++)

    {

        int l=,r=d.size(),m=;

        while(l<r)

        {

            m=(l+r)/;

            if(!(v[i]<d[m])) l=m+;

            else r=m;

        }

        if(l==d.size())

            d.push_back(v[i]);

        else d[l]=v[i];

    }

    for(int i=;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 ;

        vector<T> d;

        for(int i=;i<v.size();i++)

        {

            int l=,r=d.size(),m=;

            while(l<r)

            {

                m=(l+r)/;

                if(!cmp(v[i],d[m])) l=m+;

                else r=m;

            }

            if(l==d.size())

                d.push_back(v[i]);

            else d[l]=v[i];

        }

        return d.size();

    }

}

LIS 最长单调子序列模板的更多相关文章

  1. LIS最长上升子序列模板

    LIS n2解法: #include<iostream> #include<cstdio> using namespace std; int n,ans; ],f[]; int ...

  2. 动态规划模板1|LIS最长上升子序列

    LIS最长上升子序列 dp[i]保存的是当前到下标为止的最长上升子序列的长度. 模板代码: int dp[MAX_N], a[MAX_N], n; int ans = 0; // 保存最大值 for ...

  3. 算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列

    出处 http://segmentfault.com/blog/exploring/ 本章讲解:1. LCS(最长公共子序列)O(n^2)的时间复杂度,O(n^2)的空间复杂度:2. 与之类似但不同的 ...

  4. POJ - 3903 Stock Exchange(LIS最长上升子序列问题)

    E - LIS Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u   Descripti ...

  5. hdu 5256 序列变换(LIS最长上升子序列)

    Problem Description 我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增.其中无论是修改前还是修改后,每个元素都必须是整数. 请输出最少需要修改多 ...

  6. POJ 3903 Stock Exchange (E - LIS 最长上升子序列)

    POJ 3903    Stock Exchange  (E - LIS 最长上升子序列) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action ...

  7. POJ 1887 Testingthe CATCHER (LIS:最长下降子序列)

    POJ 1887Testingthe CATCHER (LIS:最长下降子序列) http://poj.org/problem?id=3903 题意: 给你一个长度为n (n<=200000) ...

  8. LIS最长上升子序列三种方法 (模板)

    O(n^)的方法: #include <iostream> #include <stdio.h> #include <cstring> #include <a ...

  9. LIS最长上升子序列O(n^2)与O(nlogn)的算法

    动态规划 最长上升子序列问题(LIS).给定n个整数,按从左到右的顺序选出尽量多的整数,组成一个上升子序列(子序列可以理解为:删除0个或多个数,其他数的顺序不变).例如序列1, 6, 2, 3, 7, ...

随机推荐

  1. Can a Tomcat docBase span multiple folders?--转

    Question: I apologize if this is a poor question, but I'm using Windows and looking to see if there' ...

  2. 开源消息中间件DotNetMQ

    由于这个开源项目对我这种中间件菜鸟很有帮助,因此,我将官方的说明文档翻译如下: Introduction In this article, I will introduce a new and ind ...

  3. JVM内存回收对象及引用分析

    自动垃圾回收是Java相较于C++的一个重要的特点,想了解JVM的垃圾回收机制,首先我们要知道垃圾回收是回收什么地方的垃圾,我在我的上一篇博客<JVM内存区域划分>里面有写到JVM里面的内 ...

  4. c#委托中另外一种用法

    在c#委托中,经常可能遇到函数重载的情况,可是又需要在一个函数中调用这些函数,一般我都是根据多个函数重载个数,也写上这么多个函数重载.比如 public double T1(int r) { retu ...

  5. 自定义控件【圆形】圆角 BitmapShader

    关于缩放比例         本例中,我们会为BitmapShader设置了一个matrix,目的是按比例放大或者缩小bitmap,并移动到View控件的中心,我们不会让view的宽高大于我们bitm ...

  6. 属性动画详解 Interpolator TypeEvaluator

    概述 产生原因         3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:prope ...

  7. SpringMVC01

    1.创建一个web项目  引入所需要的jar 2.在web.xml文件中配置 核心控制器 <?xml version="1.0" encoding="UTF-8&q ...

  8. Eclipse下Maven插件配置

    要做一个基于C/S架构的汽车租赁系统,由于在实习期间接触过一些Java和SpringMVC,Spring,Hibernate的东西,所以决定使用这个框架组合来完成这个项目. 首先是Maven的配置,为 ...

  9. MVC中不能使用原生态的#include ,可替代的解决方案

    <!--#include file="../stuff/foo/box.aspx"--> 1.可以用 <%: Html.Partial("~/Views ...

  10. SQL SERVER 查询特定的前几条数据

    1. 使用MS SQL Server 2008: 2. 数据库内容如下: insert into xuexi1 values('张三0', '数学', 98 ) insert into xuexi1 ...