首页 > 其他分享 >3637 最长上升子序列

3637 最长上升子序列

时间:2024-06-11 23:57:39浏览次数:20  
标签:int 3637 ++ 序列 长度 上升 最长

传送锚点:https://www.luogu.com.cn/problem/B3637

题目描述

这是一个简单的动规板子题。

给出一个由 \(n(n\le 5000)\) 个不超过 \(10^6\) 的正整数组成的序列。请输出这个序列的最长上升子序列的长度。

最长上升子序列是指,从原序列中按顺序取出一些数字排在一起,这些数字是逐渐增大的。

输入格式

第一行,一个整数 \(n\),表示序列长度。

第二行有 \(n\) 个整数,表示这个序列。

输出格式

一个整数表示答案。

样例 #1

样例输入 #1

6
1 2 4 1 3 4

样例输出 #1

4

提示

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

思路

a[i]为原数组,f[i]记录以a[i]为结尾的最长上升子序列长度,初始时将f数组全部初始化为1,引用双指针去遍历,

code

#include <iostream>
#include <cstring>
using namespace std;
const int N = 5005;
int a[N], f[N];//f[i]记录以a[i]为结尾的最长上升子序列长度
int ans = 1;
void solve(int n){
    //初始化 f
    for(int i = 0; i < n; i++)
       f[i] = 1;

    for(int i = 1; i < n; i++){
        for(int j = 0; j < i; j++){
            if(a[j] < a[i]){
                f[i] = max(f[i], f[j] + 1);
     // f[j] + 1为以a[j]为结尾的最长上升子序列长度 + a[i]
            }
        }
        ans = max(ans, f[i]);
    }
}
int main() {
    int n;
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> a[i];
    }
    solve(n);
    cout << ans << endl;
    return 0;
}

标签:int,3637,++,序列,长度,上升,最长
From: https://www.cnblogs.com/6Luffy6/p/18243033

相关文章

  • TensorFlow、Keras的LSTM神经网络预测和异常检验股市价格时间序列数据可视化python实
    全文链接:https://tecdat.cn/?p=36448原文出处:拓端数据部落公众号本文旨在探讨如何利用TensorFlow和Keras中的LSTM神经网络来预测和检验股市价格时间序列数据,并通过Python编程语言和可视化技术来展示预测结果和异常检验的效果。具体而言,本文将首先介绍LSTM神经网络的基本原理和Te......
  • R语言经济学:动态模型平均(DMA)、动态模型选择(DMS)预测原油价格时间序列
    原文链接:http://tecdat.cn/?p=22458 原文出处:拓端数据部落公众号 简介本文提供了一个经济案例。着重于原油市场的例子。简要地提供了在经济学中使用模型平均和贝叶斯方法的论据,使用了动态模型平均法(DMA),并与ARIMA、TVP等方法进行比较。希望对经济和金融领域的从业人员和研究......
  • PHP wind反序列化分析
    PHPWIND是很久之前一款優秀的cmsPHP反序列化是一種不斷利用php方法最終調用到危險函數從而getshell的方法主要通過各類魔術方法從而調用到危險函數我們先來分析一個簡單的鏈條反序列化小例classWoniu{private$a;function__construct(){$this->......
  • C# JavaScriptSerializer序列化时的时间处理详解
    原文链接:https://www.jb51.net/article/122143.htm输出如下图所示: 猜测这里是由于js初始化时间的时候往往是向1970/01/01添加毫秒数,JavaScriptSerializer进行序列化的时候也会格式化为距离1970/01/01到当该时间点GMT+0时间的毫秒数,如果直接反序列化可以看到少了8小时,且......
  • pta最长对称子串
    直接双指针枚举,然后直接用stl(hh)includeincludeincludeusingnamespacestd;strings;intres=1;intmain(){charc;while(scanf("%c",&c)!=EOF){s.push_back(c);}for(inti=0;i<s.size();i++){for(intj=i+1;j<s.size();j++){stri......
  • 华为OD刷题C卷 - 每日刷题 23(提取字符串中的最长表达式,模拟目录管理功能 - 完整实现)
    1、提取字符串中的最长表达式目标是从一个给定的字符串中提取出最长的合法简单数学表达式,并计算该表达式的值。如果存在多个同样长度的合法表达式,则选择第一个出现的表达式进行计算。简单数学表达式的规则:只包含0-9的数字和+、-、*三种运算符。所有数字的计算结果不超过......
  • Tiny Time Mixers (TTM)轻量级时间序列基础模型:无需注意力机制,并且在零样本预测方面表
    大语言模型的发展让研究人员专注于建立尽可能大的模型。但是其实较小的模型在某些任务中表现会优于较大的模型时,例如:Llama3-8B在MMLU任务上的表现优于较大的Llama2-70B!这就说明大模型并不是万能的,在一些特定任务中,小模型表现得可能会更出色。所以IBM的研究人员就推出了一个......
  • Python数据结构——序列(超详细版)
    在计算机程序中会有很多数据,使用数据结构可以管理这些数据,Python中的数据结构主要有序列、集合和字典。常见的数据结构有:数组(array)、集合(set)、列表(list)、队列(queue)、链表(linkedlist)、树(tree)、堆(heap)、栈(stack)和字典(dictionary)。注意:Python中并没有数组结构,因为数组要求元素类......
  • 基于GA遗传优化的CNN-GRU的时间序列回归预测matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本MATLAB2022a 3.部分核心程序figureplot(Error2,'linewidth',2);gridonxlabel('迭代次数');ylabel('遗传算法优化过程');legend('Averagefitness');[V,I]=min(JJ);X=phen1(I,:);LR......
  • WebLogic XMLDecoder反序列化漏洞
    目录前言XMLDecoder概述XMLDecoder反序列化漏洞漏洞复现前言上篇复现了T3反序列化漏洞,XMLDecoder反序列化在WebLogic中也是一类影响很大的反序化漏洞。XMLDecoder概述XMLDecoder是JDK自带的以SAX方式解析xml的类,实现java对象和xml文件之间的转化。其中序列化过程是将java对象......