动态规划之最长上升子序列模板
今天开始更新动态规划的模板(动态规划哪有模板呀!!!)话是这么说,但我们经常做题会发现有些题目有些共性,我们抽取共性总结出来,应付动态规划基础题目还是可以的。
回归正题,我们今天使用(nlogn),时间复杂度来写,模板主要使用Java来写(为什么不用c语言呢,因为c语言的模板太多了呀!!!)
我们解释一下原理吧,我们在求最长上升子序列时,可以秉持着尽量使得结尾的数最小的思想,其实也就是贪心,谁让这个贪心比n的平方的普通动规要低时间复杂度呢。我们开个ArrayList不断往里加数字,如果链表为空就直接加入,不为空,如果加入的数字大于链表尾数字,我们加入到链表末端,如果加入的数字小于链表的末尾数字,我们把它找到在链表中第一个大于它的元素的位置,把它替换为我们要加入的元素。在这里我们使用写好的二分方法,大家要注意我们求的是上升子序列不是不下降子序列,一旦我们在ArrayList里边发现一个和我们加入的数字相同的数字,我们必须
放弃加入。
模板题目:
夏令营:动态规划特训 - 【算法模板题】蓝桥勇士 - 蓝桥云课 (lanqiao.cn)
模板:
import java.awt.FontFormatException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.lang.reflect.AnnotatedWildcardType;
import java.math.BigInteger;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Objects;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.Spliterator.OfPrimitive;
import java.util.function.IntToDoubleFunction;
import java.util.function.LongBinaryOperator;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.management.relation.InvalidRelationTypeException;
import javax.print.attribute.standard.JobMessageFromOperator;
import javax.print.attribute.standard.JobPriority;
import javax.swing.table.TableModel;
import javax.swing.text.TabSet;
public class Main {public static void main(String[] args) throws IOException {
Scanner sc=new Scanner(System.in);
BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw1=new PrintWriter(System.out);
int a=sc.nextInt();
int b;
ArrayList<Integer> al1=new ArrayList<>();
for(b=0;b<a;b++) {int c=sc.nextInt();if(al1.size()==0) {al1.add(c);}if(c>al1.get(al1.size()-1)) {al1.add(c);}else {int d=Collections.binarySearch(al1,c);if(d<0) {int e=(-1)*d-1;al1.set(e, c);}}
}
System.out.println(al1.size());}}
相关文章:
动态规划之最长上升子序列模板
今天开始更新动态规划的模板(动态规划哪有模板呀!!!)话是这么说,但我们经常做题会发现有些题目有些共性,我们抽取共性总结出来,应付动态规划基础题目还是可以的。 回归正题…...
Python源码05:使用Pyecharts画词云图图
**Pyecharts是一个用于生成 Echarts 图表的 Python 库。Echarts 是一个基于 JavaScript 的数据可视化库,提供了丰富的图表类型和交互功能。**通过 Pyecharts,你可以使用 Python 代码生成各种类型的 Echarts 图表,例如折线图、柱状图、饼图、散…...
MariaDB 10.11.4 安装教程(zip格式,Windows环境)
前言 MariaDB 10.11.4 这个版本是目前最新的长期支持版,下面来安装下 下载 官网:MariaDB 10.11.4 打开上面链接,点Download 安装 解压缩下载的 zip 文件,到 bin 目录,管理员运行cmd,执行如下命令 mys…...
【Python国内源】pip换源终极方法【Windows】
1、为什么要pip换源下载 安装第三方库时,很多库来自于国外,下载速度慢得感人! 2、常见的国内源 https://pypi.tuna.tsinghua.edu.cn/simple #清华 http://mirrors.aliyun.com/pypi/simple/ #阿里云 https://pypi.mirrors.ustc.e…...
【elementUi】绘制自定义表格、绘制曲线表格
要求绘制下图系列表格: 实现步骤: 1.绘制树,实现树勾选字段—>表格绘制字段 逻辑: 树:check-change“treeChart.handleCheckChange” 绑定点击选择事件,改变data.column3数据项;表格:columns"data…...
使用 Python 中的 Langchain 从零到高级快速进行工程
大型语言模型 (LLM) 的一个重要方面是这些模型用于学习的参数数量。模型拥有的参数越多,它就能更好地理解单词和短语之间的关系。这意味着具有数十亿个参数的模型有能力生成各种创造性的文本格式,并以信息丰富的方式回答开放式和挑战性的问题。 ChatGPT 等法学硕士利用 T...
神经网络基础-神经网络补充概念-07-使用计算图求导
步骤 定义计算节点和操作: “x” 是输入变量。 “Add” 表示加法操作。 “Sub” 表示减法操作。 “Multiply” 表示乘法操作。 计算函数值: 首先,我们将 x0 的值代入计算图中,计算出函数的值。 反向传播计算导数: 我…...
docker常用指令
一、Docker指令 1、启动Docker :systemctl start docker 2、查看Docker状态:systemctl status docker 状态为active表示正在运行中 3、停止运行Docker:systemctl stop docker 4、重启Docker:systemctl restart docker 5、开机启动Docker:systemctl enable docker 二…...
【金融量化】对企业进行估值的方法有哪些?
估值的方法有哪些? 如何对企业进行估值?有2个方法估算。 1 绝对估值法 它是一种定价模型,用于计算企业的内在价值。 比如说你可以根据公司近N年的现金流情况。借此去预测未来N年的现金流情况。所有的现金流数据都可以在年报上查询到。最后…...
Qt+C++自定义控件仪表盘动画仿真
程序示例精选 QtC自定义控件仪表盘动画仿真 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对<<QtC自定义控件仪表盘动画仿真>>编写代码,代码整洁,规则&…...
怎样让音频速度变慢?请跟随以下方法进行操作
怎样让音频速度变慢?在会议录音过程中,经常会遇到主讲人语速过快,导致我们无法清晰听到对方说的内容。如果我们能够减慢音频速度,就能更好地记录对方的讲话内容。此外,在听到快速播放的外语或方言时,我们也…...
【C语言】常用的库和作用以及对应的函数
常规编程时: <stdio.h>:提供标准输入输出函数,例如printf、scanf、fprintf、fscanf等。 <stdlib.h>:提供常用的通用函数,例如内存管理函数(malloc、calloc、realloc、free)、随机数…...
Android 12.0 系统systemui下拉通知栏的通知布局相关源码分析
1.前言 在android12.0的系统rom开发中,在进行systemui中的下拉通知栏的布局自定义的时候,对于原生systemui的 系统的下拉通知栏的通知布局的了解也是非常重要的,接下来就来分析下相关的下拉通知栏的通知布局的相关 源码流程,了解这些才方便对通知栏的布局做修改 2.系统sy…...
java实现docx,pdf文件动态填充数据
一,引入pom 根据需求引入自己所需pom org.apache.poi poi 4.1.1 org.apache.poi poi-ooxml 4.1.1 org.jxls jxls 2.6.0 ch.qos.logback logback-core org.jxls jxls-poi 1.2.0 fr.opensagres.xdocreport fr.opensagres.xdocreport.core 2.0.2 fr.opensagres.xdocrep…...
【Python2】实现异步进程的创建、终止与资源回收
章节索引 前言〇、问题与难点一、进程、异步进程、线程 / 进程池二、最终的代码构成三、代码逻辑讲解四、扩展的知识后记 前言 由于业务需求,需要在服务中加入一个异步任务,执行大量的耗时计算操作,需求细节如下: Handler处理器…...
leetcode做题笔记79单词搜索
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相…...
http库 之 OKHttpUtil
源码位置 方便实用,个人感觉不错 依赖 <dependency><groupId>io.github.admin4j</groupId><artifactId>common-http-starter</artifactId><version>0.7.5</version> </dependency>代码实践 /*** 通用http的pos…...
gitlab合并新项目和分支切换
一、新建项目 1、创建空白项目 2、先创建一个群组 3、编写群组信息 4、创建群组完成以后新建项目 二、将代码推送到gitlab 1、初始化 git init 2、关联gitlab地址 # 比如:http://192.168.139.128:7070/cloud/obwt_cloud.git git remote add origin <你…...
WebStorm修改默认打开的浏览器
有两种方式第一种修改系统默认浏览器 我采用的是下面这种,在webstorm中修改 将浏览器设置为默认的浏览器即可...
vue3+vite+pinia
目录 一、项目准备 1.1、Vite搭建项目 1.2、vue_cli创建项目 二、组合式API(基于setup) 2.1、ref 2.2、reactive 2.3、toRefs 2.4、watch和watchEffect 2.5、computed 2.6、生命周期钩子函数 2.7、setup(子组件)的第一个参数-props 2.8、setup(子组件)的第二个参数…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
