首页 > 其他分享 >最长递增子序列

最长递增子序列

时间:2023-07-18 19:33:37浏览次数:71  
标签:递增 数组 LIS 序列 最长 dp


今天看了hdu的1159,以为是最长递增子序列,然后敲完代码发现samp不对,看了discuss发现原来是lcs


最长递增子序列(LIS):求一个序列的LIS

有三种算法,一种是排个序然后和自己求最长公共子序列

第二种就是dp,dp[i] = max(dp[j]) + 1; (j∈[0,i-1]),dp[i]表示前i个的LIS的长度,能用这个状态方程肯定要加个判断条件的,即保证递增

第三种就是

用一个数组B[i],表示长度为i的结尾的最小的值

从第一个开始遇到一个新值,就在B数组里查看是否可以插进去,即是不是可以更新某个长度结尾的最小值,能更新就更新之,不能的话,那就意味着它比B数组的所有值都大

那么就代表LIS的长度又要增加一

因为B数组肯定有序,而查找替换就可以用二分解决了,因此这个算法的时间复杂度为O(nlogn)


参考:O(nlogn)算法

三种简介与实现

标签:递增,数组,LIS,序列,最长,dp
From: https://blog.51cto.com/u_16192154/6767485

相关文章

  • 向量自回归(VAR)模型分析消费者价格指数 (CPI) 和失业率时间序列|附代码数据
    原文链接:http://tecdat.cn/?p=24365最近我们被客户要求撰写关于向量自回归(VAR)模型的研究报告,包括一些图形和统计输出。var对象指定了p阶平稳的多变量向量自回归模型(VAR(p))模型的函数形式并存储了参数值 ( 点击文末“阅读原文”获取完整代码数据******** )。描述varm 对象的......
  • 零基础入门——从零开始学习PHP反序列化笔记(二)
    魔术方法魔术方法介绍__construct()触发时机:实例化对象之前构造函数,在实例化一个对象的时候,首先会去自动执行的一个方法;<?phpclassUser{public$username;publicfunction__construct($username){$this->username=$username;echo"......
  • redisson实现序列化的方法
    引用:https://www.fengnayun.com/news/content/102781.html这篇文章运用简单易懂的例子给大家介绍redisson实现序列化的方法,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-MemoryDataGrid)。Redis......
  • 时间序列的季节性:3种模式及8种建模方法
    分析和处理季节性是时间序列分析中的一个关键工作,在本文中我们将描述三种类型的季节性以及常见的8种建模方法。什么是季节性?季节性是构成时间序列的关键因素之一,是指在一段时间内以相似强度重复的系统运动。季节变化可以由各种因素引起,例如天气、日历或经济条件。各种应用程......
  • Fastjson反序列化
    Fastjson反序列化漏洞fastjson是阿里巴巴公司推出的一个用于快速处理json数据的java类库,这个库由于在传输json数据的时候,中间有一个标识,这个标识允许用户传入一个类名,因此攻击者可以传入他想要执行的类,通过执行这个类,调用rmi方法,去执行他部署的一个恶意方法json一种特殊的数据......
  • 力扣---300. 最长递增子序列
    给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例1:输入:nums=[10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是[......
  • kruskal重构树和Prufer序列
    kruskal重构树 首先前置知识就是\(kruskal\)求最小生成树,就不再多说了。 \(kruskal\)重构树其实就是把最小生成树这个建成一个二叉树,然后这个图中所有的叶子节点都是原图中的节点。 其余的点每一个点都有一个权值\(w[i]\),代表从左边的集合到右边的集合的路径,优于重构......
  • P7809 [JRKSJ R2] 01 序列 题解
    前言传送门blog思路Problem1问题一问的是最长不下降子序列的长度,在一个$01$串中的最长不下降子序列,总共有三种$000\dots$,$000\dots111\dots$和$111111\dots$。可以把找到以上三种最长不下降子序列问题变为:$$\max^r_{i=l}(\sum_{j=l}^i[a_j=0])+(\sum_{j=i+1}^......
  • 【补充】Django自带的序列化组件
    【11.0补充】Django自带的序列化组件【一】准备数据fromdjango.dbimportmodels#Createyourmodelshere.classUser(models.Model):username=models.CharField(max_length=32,verbose_name="姓名")age=models.IntegerField(verbose_name="年龄")g......
  • redis序列化配置
    redis序列化配置@ConfigurationpublicclassRedisTemplateConfiguration{/***@paramredisConnectionFactory*@return*/@BeanpublicRedisTemplate<Object,Object>redisTemplate(RedisConnectionFactoryredisConnectionFactory){......