当前位置: 首页 > news >正文

最长上升子序列LIS(一般+优化)

1. 题目

题目链接:

B3637 最长上升子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

输入样例:

6
1 2 4 1 3 4

输出样例:

4

说明/提示:

分别取出 1、2、3、4 即可。

2. 具体实现

2.1 一般做法

   dp[i]表示第i个位置的最长上升子序列个数

//思路:
//dp[i]表示第i个位置的最长子序列个数
//dp[i]也就是找到前面1到i-1位置上值小于a[i]的最大dp值 
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int a[N],dp[N]; 
int main(void){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];dp[i]=1;}int res=1;for(int i=2;i<=n;i++){int tmax=0;for(int j=1;j<i;j++){  //遍历前i-1项,找到值<a[i]的最大dp值 if(a[i]>a[j]) tmax=tmax>dp[j]?tmax:dp[j];}dp[i]=tmax+1;res=max(res,dp[i]);}cout<<res; return 0;
} 
  • 时间复杂度: O(n^2)
  • 空间复杂度: O(N)

 2.2 优化

dp[i]表示最长子序列长度为i的最小尾数

//思路2:
//dp[i]表示最长上升子序列长度为i的最小尾数
//显而易见,dp是一个递增序列
//我们对每一个数进行遍历
//每一次找到值大于a的位置进行更新即可。
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;   //最小尾数最大页只能为1e6
int dp[N];
int a[5010]; 
int main(void){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}dp[1]=a[1];  //初始化 int ans=1;for(int i=1;i<=n;i++){//找到dp中值第一个大于a[i]的位置int t=lower_bound(dp+1,dp+1+ans,a[i])-dp; dp[t]=a[i];ans=max(ans,t);}cout<<ans; return 0;
} 
  • 时间复杂度: O(nlog⁡n)
  • 空间复杂度: O(n)

lower_bound()函数是C++提供的二分查找的函数,具体使用方法可以看以下文章:

关于lower_bound( )和upper_bound( )的常见用法_lowerbound和upperbound-CSDN博客

代码自己写的,有什么问题欢迎指正。

都看到这里了,点个赞再走吧!!!(*^_^*)

相关文章:

最长上升子序列LIS(一般+优化)

1. 题目 题目链接&#xff1a; B3637 最长上升子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 输入样例&#xff1a; 6 1 2 4 1 3 4 输出样例&#xff1a; 4 说明/提示&#xff1a; 分别取出 1、2、3、4 即可。 2. 具体实现 2.1 一般做法 dp[i]表示第i个位置的…...

【Python系列】Python 协程:并发编程的新篇章

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

详解C/C++输入输出

前言 C/C输入输出很多&#xff0c;在不同的情况会用不同的输入输出&#xff0c;有的题目在输入时可能换一种输入输出就能不会TLE&#xff0c;有的输入可能要循环输入&#xff0c;但是可以换一种输入直接就能把所有数据输入进去。C/C有哪些常用的输入输出&#xff0c;在什么时候…...

AI人工智能开发环境配置

AI人工智能 为什么使用Python来开发AI 人工智能被认为是未来的趋势技术。 已经有了许多应用程序。 因此&#xff0c;许多公司和研究人员都对此感兴趣。 但是这里出现的主要问题是&#xff0c;在哪种编程语言中可以开发这些 AI 应用程序&#xff1f; 有各种编程语言&#xff0c…...

Tomcat 8.5 下载、安装、启动及各种问题

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 本期内容主要介绍 Tomcat 8 的安装&#xff0c;以及可能会遇到的问题 文章目录 1. Tomcat 安装2. 可能会遇到的问题2.…...

Harbor系列之5:复制管理

Harbor的镜像复制功能 Harbor 提供镜像复制功能&#xff0c;允许用户以推送和拉取方式在不同 Harbor 仓库之间&#xff0c;以及 Harbor 与非 Harbor 仓库间&#xff08;如Alibaba ACR、Quay、Aws ECR、Azu热ACR、Docker Registry、Docker Hub等&#xff09;复制 image、chart …...

V.PS德国VPS详细测评

V.PS的德国机房位于法兰克福&#xff0c;默认接入电信CN2 GIA、联通CUII网络&#xff0c;针对中国大陆进行路由优化处理的。而且是强制移动走联通的CUII链路&#xff0c;确保三网都处在轻负载的网络环境下。 CPU是Intel Xeon Gold 6133 &#xff0c;启用了BBR&#xff0c;归属德…...

【Vue3】组件通信之自定义事件

【Vue3】组件通信之自定义事件 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋…...

[CTF]-PWN:ORW题型综合解析

经典ORW&#xff1a; 例题&#xff08;极客大挑战 2019 Not Bad&#xff09;&#xff1a; 这里使用mmap函数创造了一个内存映射区域 从地址0x123000开始&#xff0c;大小位0x1000 权限为可写可执行&#xff08;可读0x1&#xff0c;可写0x2&#xff0c;可执行0x3&#xff09;…...

VSCode中yarn的安装和使用

VSCode只要是做前端的&#xff0c;大家都不陌生&#xff0c;就不讲其使用了。 Yarn是一款高效、可靠的JavaScript包管理器&#xff0c;与NPM类似&#xff0c;但有其独特的优势&#xff0c;如更高效的安装速度、更好的依赖管理等 要在VSCode中使用Yarn&#xff0c;‌需要按照以…...

Java后端面试复习7.23

进程和线程线程优先级线程状态线程构造方式三种推荐用哪种为什么线程中断调用什么方法&#xff0c;本线程怎检查为什么线程不应强制停止线程通信方式四种ThreadLocalFUtureTask线程礼让终止线程的另一个缺陷&#xff08;锁&#xff09;守护线程什么时候设置为守护县城sleep&…...

Arduino PID库 (2) –微分导致的过冲

Arduino PID库 &#xff08;2&#xff09; – Derivative Kick 参考&#xff1a;手把手教你看懂并理解Arduino PID控制库——微分冲击 pid内容索引-CSDN博客 Arduino PID库 &#xff08;1&#xff09;– 简介 问题 此修改将稍微调整derivative term。目标是消除一种称为“…...

基于强化学习算法玩CartPole游戏

什么事CartPole游戏 CartPole&#xff08;也称为倒立摆问题&#xff09;是一个经典的控制理论和强化学习的基础问题&#xff0c;通常用于测试和验证控制算法的性能。具体来说&#xff0c;它是一个简单的物理模拟问题&#xff0c;其目标是通过在一个平衡杆&#xff08;倒立摆&a…...

uniapp0基础编写安卓原生插件和调用第三方jar包(Ch34的jar包)和如何解决android 如何Application初始化

前言 我假设你会uniapp安卓插件开发了,如果不会请看这篇文章,这篇文章是0基础教学。 这篇文章我们将讲一下如何使用CH34XUARTDriver.jar进行开发成uniapp插件。 它的难点是:uniapp如何Application初始化第三方jar包 先去官网下载CH340/CH341的USB转串口安卓免驱应用库:h…...

使用Leaflet进行船舶航行警告区域绘制实战

目录 前言 一、坐标格式转换 1、数据初认识 2、将区域分割成多个点 3、数据转换 4、数据转换调用 二、WebGIS展示空间位置信息 1、定义底图 2、Polygon的可视化 3、实际效果 三、总结 前言 通常而言&#xff0c;海事部门如海事局&#xff0c;通常会在所述的管辖区域内…...

用Ollama 和 Open WebUI本地部署Llama 3.1 8B

说明&#xff1a; 本人运行环境windows11 N卡6G显存。部署Llama3.1 8B 简介 Ollama是一个开源的大型语言模型服务工具&#xff0c;它允许用户在自己的硬件环境中轻松部署和使用大规模预训练模型。Ollama 的主要功能是在Docker容器内部署和管理大型语言模型&#xff08;LLM&…...

计算机毕业设计选题推荐-学生作业管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

RIP实验

实验拓扑&#xff1a; 实验要求&#xff1a; R1-R2-R3-R4-R5&#xff1a;RIP 100 运行版本2 R6-R7&#xff1a;RIP 200 运行版本1 1.使用合理IP地址规划网络&#xff0c;各自创建环回接口 2.R1创建环回 172.16.1.1/24 172.16.2.1/24 172.16.3.1/24 3.要求R3使用R2访问R1环…...

手把手教你如何在宝塔上添加可道云登录页面的ICP备案信息,别跟权威开玩笑。

如何在宝塔上添加可道云登录页面的ICP备案信息 事情的原由来我们开始吧首先登录你的宝塔页面双击打开index.php文件保存退出即可 感谢大佬&#xff0c;希望对被查到的朋友有所帮助&#xff01; 事情的原由 今天突然收到腾讯云发来的一封Email&#xff0c;说我需要整改我的网站…...

基于JSP技术的大学生校园兼职系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;JSP 数据库&#xff1a;MySQL 技术&#xff1a;JSPJavaBeans 工具&#xff1a;MyEclipse&#xff0c;Tomcat&#xff0c;Navicat 系统展示 首页 学…...

VSCode在windows系统下的配置简单版

参考链接 从零开始的vscode安装及环境配置教程(C/C)(Windows系统)_vscode搭建编译器环境-CSDN博客 vscode生成tasks.json、launch.json、c_cpp_properties.json文件_vscode生成launch.json-CSDN博客 自动生成配置文件简单方便&#xff01;&#xff01;&#xff01; 运行c代…...

C++初学(9)

9.1、结构简介 虽然数组能够和存储多个元素&#xff0c;但所有元素必须相同&#xff0c;也就是说&#xff0c;同一个数组不能既存放int类型也存放float类型&#xff0c;而C的结构可以满足要求。结构是一种比数组更灵活的数据格式&#xff0c;因为同一个结构可以存储多种类型的…...

ardupilot开发 --- 网络技术综述 篇

不信人间有白头 一些概念参考文献 一些概念 以太网、局域网、互联网 以太网(Ethernet)&#xff0c;是一种计算机局域网技术。以太网是一种有线网络技术&#xff0c;网络传输介质包括&#xff1a;以太网电缆&#xff0c;如常见的双绞线、光纤等。根据传输速度&#xff0c;可以氛…...

一文详解大模型蒸馏工具TextBrewer

原文&#xff1a;https://zhuanlan.zhihu.com/p/648674584 本文分享自华为云社区《TextBrewer&#xff1a;融合并改进了NLP和CV中的多种知识蒸馏技术、提供便捷快速的知识蒸馏框架、提升模型的推理速度&#xff0c;减少内存占用》&#xff0c;作者&#xff1a;汀丶。 TextBre…...

Go语言加Vue3零基础入门全栈班10 Go语言+gRPC用户微服务项目实战 2024年07月31日 课程笔记

概述 如果您没有Golang的基础&#xff0c;应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728Go语言操作MySQL开发用户管理系统API教程_20240729Redis零基础快速入门_20231227GoRedis开发用户管理系统API实战_20240730Mo…...

ChatGPT能代替网络作家吗?

最强AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 当然可以&#xff01;只要你玩写作AI玩得6&#xff0c;甚至可以达到某些大神的水平&#xff01; 看看大神、小白、AI输出内容的区…...

Http自定义Header导致的跨域问题

最近写一个小项目&#xff0c;前后端分离&#xff0c;在调试过程中访问远程接口&#xff0c;出现了CORS问题&#xff0c;接口使用的laravel框架&#xff0c;于是添加了解决跨域的中间件&#xff0c;但是前端显示仍存在跨域问题&#xff0c;以为自己写的有问题&#xff0c;检查了…...

python 中 file.read(), file.readline()和file.readlines()区别和用法

python 中 file.read(), file.readline()和file.readlines()区别和用法 文章目录 python 中 file.read(), file.readline()和file.readlines()区别和用法1. file.read()2. file.readline()3. file.readlines()4. 总结5. 注意事项 file.read(), file.readline(), 和 file.readli…...

python 学习: np.pad

在NumPy中&#xff0c;np.pad函数用于对数组进行填充&#xff08;padding&#xff09;&#xff0c;即在数组的边界处添加额外的值。这在图像处理、信号处理或任何需要扩展数据边界的场景中非常有用。 以下是np.pad函数的一些关键参数和使用示例&#xff1a; array&#xff1a…...

等保2.0 | 人大金仓数据库测评

人大金仓数据库&#xff0c;全称为金仓数据库管理系统KingbaseES&#xff08;简称&#xff1a;金仓数据库或KingbaseES&#xff09;&#xff0c;是北京人大金仓信息技术股份有限公司自主研制开发的具有自主知识产权的通用关系型数据库管理系统。以下是关于人大金仓数据库的详细…...

手机壳在线设计网站/宁波网络推广seo软件

这两天再看&#xff2b;近邻法&#xff0c;&#xff2b;近邻法是基本的分类与回归算法&#xff0e;在这里总结一下&#xff0c;从一下几个方面&#xff0e; &#xff11;&#xff2b;&#xff2e;&#xff2e;的原理 &#xff12;距离度量 3 &#xff2b;值的选取 4 分类规则以…...

博士后是否可以做网站负责人/郑州手机网站建设

代码下载 地址 http://pan.baidu.com/s/1nuZjyat 接着说 上文继续说,这次我们要生成主从表. 此方用到了第三方的 控件 DevExpress 的Gridview .大家可去网上下载,安装后再开发. 主从表的设计,我用的 是splitContainer1 控件,水平方向拆分, 看看表 设计器文件, 发生了什么变化.…...

潍坊网站建设费用/手机百度正式版

普及云知识 构筑云人才生态——华为人才生态数字化平台 & 华为云微认证发布【 中国&#xff0c;上海&#xff0c;2018年10月12日】全球领先的信息与通信技术&#xff08;ICT&#xff09;解决方案供应商华为技术有限公司在上海举办的华为全联接大会上正式发布华为人才生态数…...

给公司做网站销售怎样啦/群排名优化软件

大佬教学~链接如下 Log4j2 漏洞风险演示与个人看法_哔哩哔哩_bilibili...

网站开发 国际网站/常德论坛网站

Toy Posted in AppsRSSTrackbackPartition Logic 是一款硬盘分区及数据解决器材。它可以确立、删除、花式化、料理整理、从头调解、以及移动分区。另外&#xff0c;你也可以利用它复制整个硬盘的数据。Partition Logic 是从容软件&#xff0c;发布在 GPL 容许之下。它支持从光驱…...

python做网站内容爬虫/专业营销策划团队

单点登录&#xff0c;众所周知&#xff0c;一台机器登录&#xff0c;另一台登陆的时候会把第一台挤掉&#xff08;实时&#xff09;&#xff0c;一般情况下&#xff0c;除非做实时处理的&#xff0c;都是在第一台登录有关token认证的情况下&#xff0c;给接口写一个中间件处理&…...