首页 > 其他分享 >最长上升子序列(LIS)

最长上升子序列(LIS)

时间:2024-08-05 15:55:18浏览次数:13  
标签:ll 个数 LIS 序列 最长 dp

最长上升子序列(LIS)

前情提要

子串:连续的

子序列:非连续,但相对序的

抛出示例

1 5 2 3 9 5 2 4 等8个数a[8]

前1个数构成的LIS: 最长是1。 子序列为:1

前2个数构成的LIS: 最长是2。 子序列为:1 5

前3个数构成的LIS: 最长是2。 子序列为:1 5或1 2(但我们只考虑1 2)

前4个数构成的LIS: 最长是3。 子序列为:1 2 3

前5个数构成的LIS: 最长是4。 子序列为:1 2 3 9

前6个数构成的LIS: 最长是4。 子序列为:1 2 3 5

前7个数构成的LIS: 最长是2。 子序列为:1 2(此处的2是第七个位置的2)

前8个数构成的LIS: 最长是4。 子序列为:1 2 3 4

答案是8个数中最长的即4

我们发现8次计算中子序列最后一位数字当前的数字a[i],因为我们只考虑这个位置之前的,且比这个位置小的数

用dp[i] 表示前i个数字,以a[i]结尾的最长上升子序列

转移方程 dp[i]=max(dp[i],dp[j]+1) 其中(1<=j<i且a[j]<a[i])

初始化 dp[i]表示前i个,但是如果前面没有比a[i],小的,那么dp[i]=1,子序列:a[i]。即dp[i]的初始值为1

答案就是dp[i]中最大的一个数

解决算法O(n2)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5555;//一般只能几千数量级
ll a[N];
ll dp[N];
//dp[i],表示前i个数字,
//以a[i]结尾的最长上升子序列长度
void solve()
{
    ll n,ans=0;cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        dp[i]=1;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<i;j++)
        {
            if(a[j]<a[i])
            {
                dp[i]=max(dp[i],dp[j]+1);
            }
        }
        ans=max(ans,dp[i]);
    }
    cout<<ans;
}
int main()
{
    solve();
}

优化算法

标签:ll,个数,LIS,序列,最长,dp
From: https://blog.csdn.net/2301_79929720/article/details/140929359

相关文章

  • 【Dynamo】AnyCAD使用Dynamo绘制三维模型(二)——生成序列和范围的几种方式
    说明:Dynamo为开源项目,开源地址:https://github.com/DynamoDS/Dynamo.git本文章使用版本:v3.0.3范围使用Range节点start和end分别表示范围的边界,step表示步长。如下为[1,10]范围内步长为2结果​使用CodeBlock节点在CodeBlock填写如下形式的代码beginning..end..step-si......
  • 群辉NAS利用AList搭建混合云盘⑥挂接腾讯微云
    目录……接前文5、挂接腾讯微云未完待续…………接前文5、挂接腾讯微云登录AList后台→管理→存储→驱动供选择“腾讯微云”→填写挂接路径打开“配置文档”(详见前文)打开配置文档→简体中文→开始→找到腾讯微云部分,可以看到关于Cookie的设置方法。手工用浏览器登......
  • 速卖通、美客多自养号经验分享:满足测评条件与Listing优化秘诀
    Listing,即产品在电商平台上的展示页面,是吸引顾客、促进销售的关键窗口。为了在众多竞品中脱颖而出,卖家需精心优化Listing的每一个细节,从类别选择到描述撰写,每一步都至关重要。以下是Listing优化的五大核心策略:1. 类别精准定位分类精准:正确选择产品所属的分类,甚至可考虑添加......
  • python中序列的学习
    序列目录序列序列的通用操作在python中,有这样一些类型,他们的成员是有序排列的,并且可以通过下表访问成员,这些类型称之为序列。包括:列表、range、元组和字符串;序列的通用操作函数描述备注len(item)计算容器中元素的个数del(item)删除变量del有两种方式max(item)......
  • 混合了 UTF-8 字符串和 Unicode 转义序列的字符串统一转化为 UTF-8 编码的字符串
    如果你有一个包含混合了UTF-8字符串和Unicode转义序列的字符串,并希望将它们统一转化为UTF-8编码的字符串,你可以按以下步骤进行操作。此过程涉及区分正常的UTF-8字符串和那些需要解码的Unicode转义序列。示例假设你的字符串包含以下内容:mixed_str="这是一段文本......
  • 最长最短单词【原创】
    最长最短单词描述输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。试输出第1个最长的单词和第1个最短单词。输入一行句子。输出......
  • Central Collision
      importturtleimportmathfromrandomimportuniformfromdataclassesimportdataclassWIDTH=1200HEIGHT=800MIN_V=5MAX_V=15MIN_SIZE_FACTOR=0.7MAX_SIZE_FACTOR=4START_DISTANCE=600R=10MARGIN=50SLEEP_MS=20@dataclassclas......
  • 【转载】科研写作入门 —— 聊聊Science Research Writing for non-native Speakers o
    原地址:https://zhuanlan.zhihu.com/p/623882027平行侠:今天我们聊一聊ScienceResearchWritingfornon-nativeSpeakersofEnglish这本书,我博士毕业发的TIP论文就是看了这本书之后才写出来的,我太爱这本书了,请你给我们介绍一下吧。AI:非常高兴听到您对这本书的好评!《S......
  • 【LeetCode:3. 无重复字符的最长子串 + 滑动窗口】
    ......
  • LeetCode | 141 linked list cycle
    https://github.com/dolphinmind/datastructure/tree/datastructure-linkedlist分析证明过程基本假设假设环的长度为(C)假设从链表的头部到环的入口点的距离为(A)假设从环的入口点到快慢指针第一次相遇点的距离为(B)假设从快慢指针第一次相遇点回到环的入口点的距离为(C......