【蓝桥杯】算法笔记3

1. 最长上升子序列(LIS)

1.1. 题目

想象你有一排数字,比如:3, 1, 2, 1, 8, 5, 6

你要从中挑出一些数字,这些数字要满足两个条件:

  1. 你挑的数字的顺序要和原来序列中的顺序一致(不能打乱顺序)

  2. 你挑的数字要一个比一个大(严格递增)

问:最多能挑出多少个这样的数字?

比如上面这个例子:

  • 可以挑 3, 8(但长度只有2)

  • 可以挑 1, 2, 5, 6(长度是4)

  • 也可以挑 1, 2, 8(长度是3)

最长的就是4,所以答案是4

1.2. 思路(动态规划)

我们用一个数组dp来记录:

  • dp[i] 表示:以第i个数字结尾时,能组成的最长上升子序列的长度

比如对于序列 [3,1,2,1,8,5,6]:

  1. 第一个数字3:只能选它自己,所以dp[0]=1

  2. 第二个数字1:比3小,不能接在3后面,只能自己开头,dp[1]=1

  3. 第三个数字2:

    • 可以接在1后面(1<2),所以长度=dp[1]+1=2

    • 不能接在3后面(3>2)

    • 所以dp[2]=2

  4. 第四个数字1:

    • 比前面的3,1,2都小,只能自己开头

    • dp[3]=1

  5. 第五个数字8:

    • 可以接在3后面(3<8),长度=dp[0]+1=2

    • 可以接在1后面(1<8),长度=dp[1]+1=2

    • 可以接在2后面(2<8),长度=dp[2]+1=3

    • 可以接在前面的1后面(1<8),长度=dp[3]+1=2

    • 最大的是3,所以dp[4]=3

  6. 继续计算最后两个数字...最终dp = [1,1,2,1,3,3,4]

  7. 最大值是4,所以答案是4

1.3. 完整代码(动态规划)

n = int(input())  # 先读取数字的个数
nums = list(map(int, input().split()))  # 读取数字序列# 初始化dp数组,每个数字自己就是一个长度为1的子序列
dp = [1] * n  # 从第二个数字开始检查(因为第一个数字的dp值肯定是1)
for i in range(1, n):# 看看前面所有数字for j in range(i):# 如果前面的数字比当前数字小,就可以接在后面if nums[j] < nums[i]:# 更新dp[i],选择更大的值dp[i] = max(dp[i], dp[j] + 1)# 相当于说:"如果接在这个数字后面,会不会让序列更长&#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能测试之jmeter的基本使用

简介 Jmeter是Apache的开源项目&#xff0c;基于Java开发&#xff0c;主要用于进行压力测试。 优点&#xff1a;开源免费、支持多协议、轻量级、功能强大 官网&#xff1a;https://jmeter.apache.org/index.html 安装 安装步骤&#xff1a; 下载&#xff1a;进入jmeter的…

【NLP 面经 7、常见transformer面试题】

目录 1. 为何使用多头注意力机制&#xff1f; 2. Q和K使用不同权重矩阵的原因 3. 选择点乘而非加法的原因 4. Attention进行scaled的原因 5. 对padding做mask操作 6. 多头注意力降维原因 7. Transformer Encoder模块简介 8. 乘以embedding size的开方的意义 9. 位置编码 10. 其…

【深度学习】CNN简述

文章目录 一、卷积神经网络&#xff08;CNN&#xff09;二、CNN结构特性1. CNN 典型结构2. 局部连接3. 权重共享4.空间或时间上的次采样 三、理解层面 一、卷积神经网络&#xff08;CNN&#xff09; 卷积神经网络(Convolutional Neural Network&#xff0c;CNN)是一种用于处理…

理解OSPF 特殊区域NSSA和各类LSA特点

本文基于上文 理解OSPF Stub区域和各类LSA特点 在理解了Stub区域之后&#xff0c;我们再来理解一下NSSA区域&#xff0c;NSSA区域用于需要引入少量外部路由&#xff0c;同时又需要保持Stub区域特性的情况 一、 网络总拓扑图 我们在R1上配置黑洞路由&#xff0c;来模拟NSSA区域…

论文阅读笔记:Denoising Diffusion Implicit Models (5)

0、快速访问 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08;1&#xff09; 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08;2&#xff09; 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08…

蓝桥杯2024年第十五届省赛真题-R 格式

题目链接&#xff1a; 思路&#xff1a; 通过数组模拟d的每一位&#xff0c;逐位进行计算&#xff0c;从而实现对d的精确处理。 代码&#xff1a; #include<bits/stdc.h> #define int long long using namespace std; const int N 2020;int n; string s; vector<i…

深入探索 Linux Top 命令:15 个实用示例

在 Linux 系统管理中&#xff0c;top 命令是系统性能监控不可或缺的工具。它能够实时显示系统的 CPU、内存、进程等资源的使用情况&#xff0c;帮助您快速识别性能瓶颈和异常进程。本文将详细介绍 15 个实用的 top 命令使用示例&#xff0c;旨在帮助您更高效地进行系统管理与优…

15.1linux设备树下的platform驱动编写(知识)_csdn

上一章我们详细的讲解了 Linux 下的驱动分离与分层&#xff0c;以及总线、设备和驱动这样的驱动框架。基于总线、设备和驱动这样的驱动框架&#xff0c; Linux 内核提出来 platform 这个虚拟总线&#xff0c;相应的也有 platform 设备和 platform 驱动。 上一章我们讲解了传统的…

Eclipse 视图(View)

Eclipse 视图(View) Eclipse 视图(View)是 Eclipse 界面的重要组成部分,它提供了用户交互的平台,使得用户可以通过图形界面来编辑、调试、分析代码等。在本文中,我们将深入探讨 Eclipse 视图的功能、使用方法以及它们在软件开发中的作用。 1. 视图的功能 Eclipse 视图具…

Python解决“数字插入”问题

Python解决“数字插入”问题 问题描述测试样例解题思路代码 问题描述 小U手中有两个数字 a 和 b。第一个数字是一个任意的正整数&#xff0c;而第二个数字是一个非负整数。她的任务是将第二个数字 b 插入到第一个数字 a 的某个位置&#xff0c;以形成一个最大的可能数字。 你…

ubuntu部署ollama+deepseek+open-webui

ubuntu部署ollamadeepseekopen-webui 全文-ubuntu部署ollamadeepseekopen-webui 大纲 Ollama部署 安装Ollama&#xff1a;使用命令apt install curl和curl -fsSL https://ollama.com/install.sh | sh ollama-v网络访问配置&#xff1a;设置环境变量OLLAMA_HOST0.0.0.0:11434&…

Java的Selenium常用的元素操作API

click 触发当前元素的点击事件 clear() 清空内容 sendKeys(...) 往文本框一类元素中写入内容 getTagName() 获取元素的的标签名 getAttribute(属性名) 根据属性名获取元素属性值 getText() 获取当前元素的文本值 isDisplayed() 查看元素是否显示 get(String url) 访…

洛谷题单3-P1035 [NOIP 2002 普及组] 级数求和-python-流程图重构

题目描述 已知&#xff1a; S n 1 1 2 1 3 … 1 n S_n 1\dfrac{1}{2}\dfrac{1}{3}…\dfrac{1}{n} Sn​121​31​…n1​。显然对于任意一个整数 k k k&#xff0c;当 n n n 足够大的时候&#xff0c; S n > k S_n>k Sn​>k。 现给出一个整数 k k k&#xff0…

CMDB平台(进阶篇):3D机房大屏全景解析

在数字化转型的浪潮中&#xff0c;数据中心作为企业信息架构的核心&#xff0c;其高效、智能的管理成为企业竞争力的关键因素之一&#xff0c;其运维管理方式也正经历着革命性的变革。传统基于二维平面图表的机房监控方式已难以满足现代企业对运维可视化、智能化的需求。乐维CM…

小白速通:Verilog流水线实现及时序分析

目录 题目&#xff1a;时序分析&#xff1a;时钟频率为50MHz数据1: a10, b20, c30, d40, e2数据2: a5, b15, c25, d35, e3数据3: a8, b12, c16, d24, e4 流水线效率分析 题目&#xff1a; verilog中&#xff0c;y(abcd)*e&#xff0c;时钟频率为50Mhz&#xff0c;用流水线的形式…

【RK3588 嵌入式图形编程】-SDL2-扫雷游戏-创建网格

创建网格 文章目录 创建网格1、概述2、更新Globals.h文件3、创建单元4、创建网格5、传递事件6、清空单元7、反馈单元格已清除8、测试9、完整代码10、总结在本文中,将详细介绍如何构建一个二维的交互式扫雷单元格网格。 1、概述 在本文中,我们将专注于构建扫雷游戏的基础结构…

高精度矢量内积计算方法 (单精度浮点, 超长矢量)

高精度矢量内积计算方法 (单精度浮点, 超长矢量) 对于单精度浮点类型的超长矢量(超过1亿元素)内积计算&#xff0c;累加误差确实是一个重要问题。以下是几种减少误差的方法&#xff1a; 1. Kahan求和算法 这是最常用的补偿求和算法&#xff0c;可以有效减少累加误差&#xf…

Java基础:Logback日志框架

什么是日志 日志技术 可以将系统执行信息&#xff0c;方便的记录到指定位置&#xff08;控制台&#xff0c;文件中&#xff0c;数据库中&#xff09; 可以随时可以开关的形式控制日志的启停&#xff0c;无需侵入到源代码中去进行修改 LogBack日志框架 LogBack快速入门 logb…

MessageQueue --- RabbitMQ WorkQueue and Prefetch

MessageQueue --- RabbitMQ WorkQueue and Prefetch 什么是WorkQueue分发机制 --- RoundRobin分发机制 --- PrefetchSpring example use prefetch --- Fair Dispatch 什么是WorkQueue Work queues&#xff0c;任务模型。简单来说就是让多个消费者绑定到一个队列&#xff0c;共同…

RNN模型与NLP应用——(9/9)Self-Attention(自注意力机制)

声明&#xff1a; 本文基于哔站博主【Shusenwang】的视频课程【RNN模型及NLP应用】&#xff0c;结合自身的理解所作&#xff0c;旨在帮助大家了解学习NLP自然语言处理基础知识。配合着视频课程学习效果更佳。 材料来源&#xff1a;【Shusenwang】的视频课程【RNN模型及NLP应用…