最长上升子序列(二分)代码模板

用二分的思想求最长上升子序列的思想就是保持单调性,用一个q[]数组来作为一个单调数组。
每次将a[i]放进q数组中,但是要保持单调性,q数组的长度就是答案。
q[]数组中存的是所以以下标为长度的最长子序列的结尾的最小值。
理解q[]数组的意义后那么就可以知道q数组下标从1开始有效。

//二分 最大上升子序列
#include<iostream>
using namespace std;
const int N = 1e5 + 9;
int a[N], q[N], n;
//q[]是一个单调数组int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin >> n;for (int i = 0; i < n; ++i) cin >> a[i];int len = 0;q[0] = -2e9;//赋值为最小值,保证不会对结果有影响for (int i = 0; i < n; ++i){int l = 0, r = len;while (l < r){int mid = l + r + 1 >> 1;if (q[mid] < a[i]) l = mid;//找到一个最大且小于a[i]的数else r = mid - 1;}len = max(len, r + 1);//找到之后r + 1就是最大上升序列q[r + 1] = a[i];//a[i]为q[]下一个数的最小的值,因为后面一个数必定大于等于a[i]//所以需要更新他的值}cout << len;return 0;
}
根据上述代码举例,比如找到a[i]找的q[4]就是小于a[i]的最大的数,用因为q[]数组是单调的所以q[5]的值大于等于a[i],这时就可以更新q[5]了,因为q[5]比原先的值小,那么最长子序列的潜力就更大了。
至于二分寻找最大小于a[i]的位置。r先初始化为len的原因就显而易见了,因为就是在q[]数组中寻找嘛!r是找到的位置,r + 1就是应该的最长子序列长度。例如:q[4]为找到的最大小于a[i]的位置,q[r + 1]会被更新成a[i]所以求len时要用r + 1.
相关文章:
最长上升子序列(二分)代码模板
用二分的思想求最长上升子序列的思想就是保持单调性,用一个q[]数组来作为一个单调数组。 每次将a[i]放进q数组中,但是要保持单调性,q数组的长度就是答案。 q[]数组中存的是所以以下标为长度的最长子序列的结尾的最小值。 理解q[]数组的意义…...
存储优化知识复习一详细版解析
存储优化 知识复习一 一、 选择题 1、1948 年,____提出了“信息熵”(shāng) 的概念,解决了对信息的量化度量问题。 A、薛定谔 B、香农 C、克劳修斯 D、纳什 【参考答案】B2、 RAID2.0技术下,LUN是建立在____上。 A、硬盘 B、条带 C、Chun…...
“暂停加息,股市低迷:242只股票创新低,比特币突破2.8万美元后看涨趋势不可挡!“
11 月1日 FOMC 会议 美联储主席杰罗姆鲍威尔周五在纽约发表讲话,毫不意外地,他采取了更加鸽派的立场,因为在不确定的世界中,美国政府的过度杠杆化和可能即将到来的经济衰退已成为共识。 根据鲍威尔对未来加息的最低限度讨论&…...
微信小程序会议OA系统其他页面
前言: 及上一文章:https://blog.csdn.net/djssubddbj/article/details/133895170?spm1001.2014.3001.5501我们所写的会议OA的首页,在这个上面我们继续完成我们的会议OA系统,这是我们的本期所要完成的页面 自定义组件 微信小程序…...
LabVIEW中使用Get LV Class Default Value 出现错误1498
LabVIEW中使用Get LV Class Default Value 出现错误1498 在LabVIEW中开发了一个应用程序,其中包含可以在执行时动态配置插件的基类。生成可执行文件后,当应用程序要执行子类时,收到以下错误信息。 Error1498 occurred at Gen LV Class Defa…...
RabbitMQ中的核心概念和交换机类型
目录 一、RabbitMQ相关概念二、Exchange类型三、RabbitMQ概念模型总结 一、RabbitMQ相关概念 Producer:生产者,就是投递消息的一方。生产者创建消息,然后发布到RabbitMQ中。消息一般可以包含两个部分:消息体和附加消息。 消息体…...
HarmonyOS开发:Log工具类源码分析
前言 一转眼就十月中旬了,国庆的劲真大,到现在还未缓过来,以至于要更新的文章迟迟未发布,大家可以看到,最近一段时间的文章,都是关于HarmonyOS相关的,两个原因吧,一是我司有这样的任…...
FFmpeg和rtsp服务器搭建视频直播流服务
下面使用的是ubuntu的,window系统可以参考: 通过rtsp-simple-server和ffmpeg实现录屏并发布视频直播_rtsp simple server_病毒宇宇的博客-CSDN博客 一、安装rtsp-simple-server (1)下载rtsp-simple-server 下载地址:R…...
数据图册页面(左边一列图片缩略图,右边展示图片大图)
最近要写这么一个页面,左侧一列图片缩略图,点击左侧缩略图后有选中效果,然后右侧展示图片原图,还能够左右翻页查看。 最后写了一个demo出来,demo还不是很完善,需要自己修改,后面我也给出了修改建…...
leetcode:105从前序与中序遍历序列构造二叉树
105:从前序与中序遍历序列构造二叉树 啊,好久都没有更新算法题目了。曾今是C,如今是Java,感慨啊。 像树这样的算法题,基本都逃不开递归。递归的思想是:将大任务拆分为小任务。我们不妨构建一个函数&#…...
H5前端开发——DOM
H5前端开发——DOM 在H5前端开发中,DOM(Document Object Model)是一个非常核心的概念,指的是文档对象模型。简单来说,DOM是浏览器将HTML文档转换为一棵树形结构的方式,这样我们可以通过JavaScript脚本语言来操作和修改HTML文档。 DOM模型由节点组成,节点包括元素(ELEM…...
专访 Web3Go 新产品 Reiki:培育 AI 原生数字资产与创意新土壤
从 DeFi 到 NFTFi、SocialFi,web3 从业者在尝试 crypto 与区块链技术能为我们的生活、创作、娱乐和文化带来何种新体验,而生成式人工智能的突破性发展则为我们与链上世界的交互、社区内容创作等带来了新的体验,改变互动、交易和价值创造方式。…...
Docker仓库harbor私服搭建
Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。 提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FT…...
【LangChain系列 11】Prompt模版——拼装组合
原文地址:【LangChain系列 11】Prompt模版——拼装组合 本文速读: 多prompt模版组合 单prompt模版拼装 在平常业务开发中,我们常常需要把一些公共模块提取出来作为一个独立的部分,然后将业务中去将这些模块进行组合。在LLM应用…...
JVM三色标记
三色标记 什么是三色标记法 三色标记法,也被称为Tri-color Marking Algorithm,是一种用于追踪对象存活状态的垃圾回收算法。它基于William D. Hana和Mark S. McCulleghan在1976年提出的两色标记法的基础上进行了改进。 与两色标记法只能将对象标记为“…...
UE5--物体卡片与材质入门
参考资料: 《Unreal Engine5 入门到精通》--左央 虚幻引擎5.2文档:https://docs.unrealengine.com/5.2/zh-CN/ 前言: 跟着左央老师的《Unreal Engine5 入门到精通》学习制作AI版胡闹厨房,把学习过程与学习到的东西归纳总结起来。 …...
ios 实现TEXT、DOC、PDF等文档读取与预览
文章目录 一、前言二、iCould相关配置三、功能实现3.1 UIDocumentPickerViewController 选取控制器3.2 读取文件3.3 文档预览3.3.1 下载并保存3.3.2 QLPreviewController预览文档四、总结一、前言 最近正在研发的项目有一个需求: 允许用户将iCloud中的文档上传,实现文件的流…...
智慧矿山:让AI算法提高未戴安全带识别率!
未穿戴安全带识别AI算法,作为智慧矿山的重要应用之一,不仅可以有效提高矿山工作人员的安全意识,还可以降低事故发生的概率。然而,识别准确率的提高一直是该算法面临的挑战之一。为了解决这个问题,研究人员不断努力探索…...
【Unity程序技巧】公共Update管理器
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
Node学习笔记之HTTP 模块
回顾:什么是客户端、什么是服务器? 在网络节点中,负责消费资源的电脑,叫做客户端;负责对外提供网络资源的电脑,叫做服务器。 http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块…...
Boss-Key:Windows终极隐私保护工具,一键隐藏窗口的办公神器
Boss-Key:Windows终极隐私保护工具,一键隐藏窗口的办公神器 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在当今…...
使用 LangGraph 构建状态化 Agent Harness
使用 LangGraph 构建状态化 Agent Harness 标题选项 从零到一:使用 LangGraph 构建高度可控的状态化 Agent 系统 LangGraph 实战指南:构建具有记忆和推理能力的智能 Agent Harness 告别简单链:使用 LangGraph 构建复杂状态化 Agent 的完整教程 掌握 LangGraph:构建企业级状…...
告别重复图片困扰:AntiDupl.NET帮你智能清理硬盘空间 [特殊字符]️
告别重复图片困扰:AntiDupl.NET帮你智能清理硬盘空间 🖼️ 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾经在整理照片时发现同一张图…...
深入PCA9685数据手册:手把手教你用STM32的IIC调试其所有寄存器(附逻辑分析仪实测波形)
STM32与PCA9685深度协同:从寄存器配置到多舵机精准控制实战 引言 在机器人关节控制、智能家居设备驱动等场景中,多路PWM信号的高精度同步输出一直是硬件开发者面临的挑战。传统STM32芯片的定时器资源有限,当需要控制多个舵机时往往力不从心。…...
揭秘LLM代码生成落地困局:5类典型业务场景的个性化适配路径(含可复用决策树)
第一章:智能代码生成个性化适配策略 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成已从通用模板输出迈向深度个性化适配阶段。开发者背景、项目约束、团队规范与运行时环境共同构成多维适配边界,单一模型输出无法满足真实工程场景的差异化…...
Qt桌面应用实战:集成YOLOv8 ONNX模型,实现摄像头/视频文件的实时目标检测与界面显示
Qt桌面应用实战:集成YOLOv8 ONNX模型实现高效目标检测 在智能视觉应用开发领域,如何将前沿的深度学习模型无缝集成到成熟的桌面框架中,是许多开发者面临的现实挑战。本文将深入探讨基于Qt框架构建一个支持实时目标检测的桌面应用,…...
FullCalendar React插件系统深度解析:打造个性化日历
FullCalendar React插件系统深度解析:打造个性化日历 【免费下载链接】fullcalendar-react The official React Component for FullCalendar 项目地址: https://gitcode.com/gh_mirrors/fu/fullcalendar-react FullCalendar React是官方推出的React日历组件&…...
终极指南:5步快速掌握VRChat动画工具,实现虚拟形象手势管理高效创作
终极指南:5步快速掌握VRChat动画工具,实现虚拟形象手势管理高效创作 【免费下载链接】VRC-Gesture-Manager A tool that will help you preview and edit your VRChat avatar animation directly in Unity. 项目地址: https://gitcode.com/gh_mirrors/…...
BepInEx完全指南:3步让任何Unity游戏变身插件平台
BepInEx完全指南:3步让任何Unity游戏变身插件平台 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是一个强大的游戏插件框架,专门为Unity Mono、IL2…...
Qt Creator 美化插件踩坑记:解决 clang-format 中文注释报错与路径配置的那些“坑”
Qt Creator 美化插件实战:clang-format 中文注释与路径配置的深度排雷指南 当你在Qt Creator中第一次尝试用clang-format美化代码时,满心期待按下快捷键后,终端却突然抛出"error: Got empty plain scalar"的红色警告——这种从云端…...
