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

B3637 最长上升子序列

时间:2023-09-26 18:45:55浏览次数:34  
标签:int B3637 序列 最长 dp define

B3637 最长上升子序列

dp模板题

以样例 1 2 4 1 3 4作为说明

每个数都是自己的一个子序列,所以全部初始化为1

从 1 - n 开始循环,定下来当前要计算的数 i

再从 1 - i 开始循环,判断 i 的最长上升子序列,定为 j

如果 i 比 j要大,则说明是上升的,此时的长度为 i 的长度与 j 的长度+1的最大值

也就得到了本题的核心

if (a[i] > a[j]) dp[i] = max(dp[i], dp[j] + 1);

最后遍历dp数组,得到最长上升子序列

#include <bits/stdc++.h>

using namespace std;

#define int long long
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define endl "\n"
typedef pair<int, int> PII;

const int N = 5010;

int n;
int a[N];
int dp[N];

void solve()
{
    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[i] > a[j]) dp[i] = max(dp[i], dp[j] + 1);
        }
    }
    int ans = 0;
    for (int i = 1; i <= n; i++) {
        ans = max(ans, dp[i]);
    }
    cout << ans << endl;
}

signed main()
{

    ios;
    int T = 1;
    //cin >> T;
    while(T--)
    {
        solve();
    }
    return 0;
}

标签:int,B3637,序列,最长,dp,define
From: https://www.cnblogs.com/ysqfirmament/p/17730903.html

相关文章

  • 5. 最长回文子串
    https://leetcode.cn/problems/longest-palindromic-substring/description/前置知识取字符串的子串s.substr(start,len);//start是子串的起始位置,从0开始,len是子串的长度思路枚举回文字符串的中间位置i,如果回文字符串的长度为奇数,则从左右i-1,i+1两个方向遍历字符串,判断是否满足......
  • 浅谈UE4的序列化
    【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!一、结合用例浅谈UE4序列化1.1需求我写文章,不爱一上来就讲道理、贴代码,而是喜欢先提需求、提问题,然后围绕这个需求的实现再一步步挖掘源码。我们......
  • 力扣刷题笔记-05 最长回文子串
    05最长回文子串半山腰有点拥挤,你要去山顶看看。中心扩展法什么是回文从左边出发,字符的顺序和从右边出发是一样的,比如aba,abba。那么基于这个理论,我们就可以想到解决方案:找一个中心点,向两边出发,左右两边各移动一位,如果相同就证明是回文子串,不相同就停止,找下一个中心点中心点......
  • AcWing 896. 最长上升子序列 II
    题目给定一个长度为$N$的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数$N$。第二行包含$N$个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围$1≤N≤100000,−10^9≤数列中的数≤10^9$输入样例:73121856输出样例......
  • C#中使用Newtonsoft.Charp实现Json对象序列化与反序列化
    场景C#中使用Newtonsoft.Json实现对Json字符串的解析:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/105795048上面讲的对JSON字符串进行解析,实际就是JSON对象的反序列化。在与第三方进行交互时常需要封装对象,存储各种属性消息,然后将对象序列化为json字符串并进......
  • PostgreSQL教程:数值类型(整型、浮点型、序列、数值的常见操作)
    整型整型比较简单,主要就是三个:smallint、int2:2字节integer、int、int4:4字节bigint、int8:8字节正常没啥事就integer,如果要存主键,比如雪花算法,那就bigint。空间要节约,根据情况smallint浮点型浮点类型就关注2个(其实是一个)decimal(n,m):本质就是numeric,PGSQL会帮你转换numeric(n,m):PGSQL......
  • P1631 序列合并
    P1631序列合并思路思路一题目要求的是二维的,太麻烦,所以我们可以将其用一维划分,将每一组都变成线性的,那线性的就很好求了,直接排序然后从前往后算即可,那么就可以将这\(n\)组合并,但如果是整个都算出来再合并就会是\(O(n^2)\)的,所以可以只记录当前的,那么对于当前的最小的状态,......
  • 32. 最长有效括号
    给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例1:输入:s="(()"输出:2解释:最长有效括号子串是"()"示例2:输入:s=")()())"输出:4解释:最长有效括号子串是"()()"示例3:输入:s=""输出:0 提示:0<=s.length<=3*104......
  • 序列模块pickle模块hashlib模块
    序列模块pickle模块hashlib模块序列化模块什么是序列化?什么是序列? 序列就是字符串序列化是把其他数据类型转为json字符串的过程什么是反序列化? 把json字符串转为其他数据类型的过程就是反序列化"""json字符串json对象"""在Python中把其他数据类型转为json需......
  • 使用bwa进行序列比对
     001、bwamem-t4-k32-M-R"@RG\tID:name\tSM:name\tPL:illumina\tLB:name\tPU:name"reference.fnasm.clean.1.fastq.gzsm.clean.2.fastq.gz|samtoolsview-Sb->sm.bam mem:mem比对算法-t:指定线程数-k:(这个参数可以不设置)最小的种子长度(minimumseedlen......