最长上升子序列模型

这里即将要介绍的是算法提高课中 最长上升子序列的一些模型和题解

题面介绍:就是有N幢高度已知的楼,从任意一个楼开始,允许向右向左任一方向向下滑翔,求能滑到的最多的楼房数。

分析:其实就是求问这个长度为N的序列中,最长的下降子序列的长度,所以我们可以根据算法基础课中的线性DP直接得出。

但是,这里有一点需要注意的是,可以向左或向右滑翔,所以也应该定义一个f2,从右往左寻找最长上升子序列长度。

状态表示:f1[i]表示的是从1~i的最长上升子序列的长度 , f2[i]表示从n~i的最长上升子序列的长度。

状态转移方程:f1[i] = max(f1[i] , f1[j] + 1) , 1

核心代码:

for(int i = 1;i

题面介绍:先往上走,再往下走,问能经过的景点的个数最多的是什么。

分析:整体思路和前面一样,也是前后两个方向找最长上升子序列 , 但是最后是把当前这个点的最长上升子序列和最长下降子序列之和放在一起找最大值。

状态表示:f1[i]表示的是从1~i的最长上升子序列的长度 , f2[i]表示从n~i的最长上升子序列的长度。

状态转移方程:f1[i] = max(f1[i] , f1[j] + 1) , 1

核心代码:

for(int i = 1;i

题面介绍:和前面的登山很相似,但是问的是有哪些人要出队(哪些景点不去);

分析:就是说要形成一个上升序列接下降序列需要去掉多少个人,因为人的总数不变,所以问题转化为上升序列和下降序列之和的最大值是什么,所以又是一个求最长上升子序列的问题。

状态表示:f1[i]表示的是从1~i的最长上升子序列的长度 , f2[i]表示从n~i的最长上升子序列的长度。

状态转移方程:f1[i] = max(f1[i] , f1[j] + 1) , 1

核心代码:

for(int i = 1;i

题面介绍:在两个一一配对的序列a,b中建边,要求这些边不能交叉(端点重合也不行),问最多的边能有多少。

分析:也是要求一个最长上升子序列,只是这里我们假设两个序列的值分别为x, y,我们是要x1 > x , y1 > y,这样去找。

状态表示:f[i]表示的是 a[i]这对配对的一定要建边的情况下,所能建边的最大值。

状态转移:f[i] = max(f[j] + 1 , f[i]) , 1

核心代码:

for(int i = 1;i

sort(q+1,q+n+1);
for(int i = 1;i

Original: https://www.cnblogs.com/ZheyuHarry/p/16247148.html
Author: ZheyuHarry
Title: 最长上升子序列模型

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583578/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • CF1468F Full Turn 题解

    注意到只要两个人初始的朝向相反就可以看到对方,否则不行。直接把斜率搞成一个 pair 压到 map 里存个数就行了。 点击查看代码 #include #include #inclu…

    数据结构和算法 2023年6月12日
    076
  • 【题解】试题库问题

    试题库问题 题目描述 问题描述: 假设一个试题库中有 (n) 道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取 (m) 道题组成试卷。并要求试卷包含指…

    数据结构和算法 2023年6月12日
    067
  • [NOI2014] 起床困难综合症

    很明显是有关 二进制的的题 and 即 & (按位与) 二进制下同一位同为1,位运算后为1 例如 (1001 & 0111 = 0001) (1001) (&amp…

    数据结构和算法 2023年6月7日
    082
  • [编译] 使用ccache加快编译速度

    Ubuntu 安装ccache sudo apt-get install ccache 安装完后确认安装执行which ccache $ which ccache /usr/bin…

    数据结构和算法 2023年6月16日
    065
  • 【POJ 2387】Til the Cows Come Home(最短路径 Dijkstra算法)

    大奶牛很热爱加班,他和朋友在凌晨一点吃完海底捞后又一个人回公司加班,为了多加班他希望可以找最短的距离回到公司。深圳市里有N个(2 Sample Input 5 5 1 2 20 2…

    数据结构和算法 2023年6月14日
    078
  • [LC1260]二维网格迁移

    二维网格迁移 题目描述 给你一个 m 行 n 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。每次「迁移」操作将会引发下述活动:位于 grid[i][j]…

    数据结构和算法 2023年6月8日
    080
  • 队列的模拟及环形队列思路

    定义 队列是一个 有序列表,可以用 数组或是 链表来实现。 遵循 先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 模拟思路 队列本身是有序列表,若使用数组的结构来…

    数据结构和算法 2023年6月12日
    089
  • 路径计数动态规划dp题目

    问题描述 输入格式 输出格式 样例 代码 补充 题解分析等闲了就补上(doge),慢慢更新ing 路径计数 比较经典常见的动态规划dp题目了 问题描述 有一个n ×n的网格,有些格…

    数据结构和算法 2023年6月7日
    097
  • Html飞机大战(十): 消灭敌机

    好家伙,本篇是带着遗憾写完的。 很遗憾,我找了很久,找到了bug但并没有成功修复bug 再上一篇中我们看到 子弹射中了敌机,但是敌机并没有消失,所以这篇我们要来完善这个功能 按照惯…

    数据结构和算法 2023年6月12日
    084
  • 对Web(Springboot + Vue)实现文件下载功能的改进

    此为 软件开发与创新 课程的作业 对已有项目(非本人)阅读分析 找出软件尚存缺陷 改进其软件做二次开发 整理成一份博客 原项目简介 本篇博客所分析的项目来自于 ジ绯色月下ぎ——vu…

    数据结构和算法 2023年6月12日
    0151
  • AtCoder ABC 270 题解(D-F)

    ​ 现在有一堆石子,一个序列a表示每次可以从石头里拿走多少个石子。当无法再拿出石头的时候,游戏结束。两边都以最佳策略游玩,请问先手者最多能拿走几个石子。 ​ 对于这种两边都采取最佳…

    数据结构和算法 2023年6月12日
    056
  • 我已经说了5种css居中实现的方式了,面试官竟然说还不够?

    这是一篇关于居中对齐方式的总结 开篇之前,先问一下大家都知道几种居中的实现方式? 面试时答出来两三个就不错了,就怕面试官还让你继续说。今天就来总结一下这些居中的方式 1.flex布…

    数据结构和算法 2023年6月8日
    088
  • HTTP缓存

    posted @2022-06-15 20:28 放飞梦想C 阅读(17 ) 评论() 编辑 Original: https://www.cnblogs.com/chengmf/p…

    数据结构和算法 2023年6月8日
    074
  • 养鱼与股票投资(1)

    为什么对大多数人来说,投资难以把握? 其实,对一件事情来说,它的难易程度,与人们对它的了解程度很相关。也就是我们常常说的,经验,对于把握一件事情来说很重要。 就股票投资来说,在现在…

    数据结构和算法 2023年6月8日
    084
  • 面试题19. 正则表达式匹配

    面试题19. 正则表达式匹配 太难了,要是面试的时候碰到这种题,直接寄了。最简单的办法就是直接调库 class Solution { public boolean isMatch(…

    数据结构和算法 2023年6月7日
    0112
  • poj 3321 Apple Tree

    题意: 有一棵树,这棵树上有很多果子,一开始每个果子都在,给出下面两种操作: 1.C x,改变果子x的状态,如果有,那么久摘下来;没有,就变为有; 2.Q x,问在x上面的(包括x…

    数据结构和算法 2023年6月12日
    081
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球