动态规划专项---最长上升子序列模型


文章目录

  • 怪盗基德的滑翔翼
  • 登山
  • 合唱队形
  • 友好城市
  • 最大上升子序列和
  • 拦截导弹
  • 导弹防御系统
  • 最长公共上升子序列

一、怪盗基德的滑翔翼OJ链接

       本题思路:本题是上升子序列模型中比较简单的模型,分别是从前往后和从后往前走一遍LIS即可。

#include <bits/stdc++.h>constexpr int N=110;int n;
int h[N];
int f[N];int main()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);int T;std::cin>>T;while(T--){std::cin>>n;for(int i=1;i<=n;i++) std::cin>>h[i];int res=0;//正向求解LIS问题for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++)if(h[j]<h[i]) f[i]=std::max(f[i],f[j]+1);res=std::max(f[i],res);}memset(f,0,sizeof f);//这里需要将此时的f数组进行清零处理//反向求解LIS问题for(int i=n;i>=1;i--){f[i]=1;for(int j=n;j>i;j--)if(h[j]<h[i]) f[i]=std::max(f[i],f[j]+1);res=std::max(f[i],res);}std::cout<<res<<std::endl;}return 0;
}

二、登山OJ链接

        本题思路:状态表示f[i]表示以第 i个位置作为当前子序列的右端点的值,g[i]表示以第 i
个位置作为当前子序列的左端点的值。状态属性:f[i]求最长上升子序列的最多景点个数,g[i]求最长下降子序列的最多景点个数。状态计算:f[i]=max(f[i],f[j]+1)(1≤j<i≤n),g[i]=max(g[i],g[j]+1)(1≤i<j≤n)
求新数组最长上升子序列就是求原数组最长下降子序列答案表示:根据每一个点来划分:ans=max(包含 i的最长上升子序列 + 包含 i的最长下降子序列)所以 ans=max(f[i]+g[i]−1)。

#include <bits/stdc++.h>constexpr int N=1010;int n;
int h[N];
int f[N],g[N];//f用来表示上升子序列 g表示下降子序列int main()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);std::cin>>n;for(int i=1;i<=n;i++) std::cin>>h[i];for(int i=1;i<=n;i++){//求出上升子序列f[i]=1;for(int j=1;j<i;j++)if(h[j]<h[i])f[i]=std::max(f[i],f[j]+1);}for(int i=n;i>=1;i--){//求出下降子序列g[i]=1;for(int j=n;j>i;j--)if(h[j]<h[i])g[i]=std::max(g[i],g[j]+1);}int res=0;for(int i=1;i<=n;i++)res=std::max(res,f[i]+g[i]-1);std::cout<<res<<std::endl;return 0;
}

三、合唱队形OJ链接

        本题思路:本题与上面一题差不多。

#include <bits/stdc++.h>constexpr int N=1010;int n;
int h[N];
int f[N],g[N];int main()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);std::cin>>n;for(int i=1;i<=n;i++) std::cin>>h[i];for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++)if(h[j]<h[i])f[i]=std::max(f[i],f[j]+1);}for(int i=n;i>=1;i--){g[i]=1;for(int j=n;j>i;j--)if(h[j]<h[i])g[i]=std::max(g[i],g[j]+1);}int res=0;for(int i=1;i<=n;i++) res=std::max(res,f[i]+g[i]-1);std::cout<<n-res<<std::endl;return 0;
}

四、友好城市OJ链接

        本题思路:这里的我们可以先想想交叉和不交叉的情况下分别画出来的图是什么样子的。我们可以发现,在两座桥不交叉的情况下,有a1<a2,b1<b2,在两座桥相交的情况下,有a1<a2,b2<b1所以我们可以发现两桥是否交叉是可以用北岸城市编号的大小关系给反应出来的。所以我们的思路就可以转化为以南岸的城市编号为基准,把所有的城市对从小到大排序,从而得到关于北岸城市的一个数组。因为当bi<bj时能成功建一座桥,所以问题就转化成了求取这个数组的最长上升子序列。到此,我们对北方城市的数组做一次 LIS就可以得到答案了。

#include <bits/stdc++.h>#define x first
#define y secondtypedef std::pair<int, int> PII;
constexpr int N=5010;int n;
int f[N];
PII line[N];int main()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);std::cin>>n;for(int i=1;i<=n;i++)std::cin>>line[i].x>>line[i].y;std::sort(line+1,line+n+1);int res=0;for(int i=1;i<=n;i++){for(int j=0;j<i;j++)if(line[j].y<line[i].y)f[i]=std::max(f[i],f[j]+1);res=std::max(res,f[i]);}std::cout<<res<<std::endl;return 0;
}

五、最大上升子序列和OJ链接

六、拦截导弹OJ链接

七、导弹防御系统OJ链接

八、最长公共上升子序列OJ链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/198189.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【c++随笔13】多态

【c随笔13】多态 多态性&#xff08;Polymorphism&#xff09;在面向对象编程中是一个重要概念&#xff0c;它允许以统一的方式处理不同类型的对象&#xff0c;并在运行时动态确定实际执行的方法或函数。一、什么是多态性&#xff1f;1、关键概念&#xff1a;C的多态性2、多态定…

算法——动态规划(新)

什么是动态规划&#xff1f; 动态规划算法的基本思想-求解步骤-基本要素和一些经典的动态规划问题【干货】-CSDN博客 一、三步问题 面试题 08.01. 三步问题 - 力扣&#xff08;LeetCode&#xff09; 思路 我们要知道&#xff0c;走楼梯&#xff0c;前三个阶梯步数已经知道&…

6 Redis的慢查询配置原理

1、redis的命令执行流程 redis的慢查询只针对步骤3 默认情况下&#xff0c;慢查询的阈值是10ms

Ps:变换

可以向选区、整个图层、多个图层或图层蒙版应用变换 Transform&#xff0c;还可以向路径、矢量形状、矢量蒙版、选区边界或 Alpha 通道应用变换。 若要变换栅格&#xff08;像素&#xff09;图像&#xff0c;建议先将其转换为智能对象&#xff0c;以便进行非破坏性的变换。 Ps菜…

【Django-DRF用法】多年积累md笔记,第(4)篇:Django-DRF反序列化详解

本文从分析现在流行的前后端分离Web应用模式说起&#xff0c;然后介绍如何设计REST API&#xff0c;通过使用Django来实现一个REST API为例&#xff0c;明确后端开发REST API要做的最核心工作&#xff0c;然后介绍Django REST framework能帮助我们简化开发REST API的工作。 全…

[内存泄漏][PyTorch](create_graph=True)

PyTorch保存计算图导致内存泄漏 1. 内存泄漏定义2. 问题发现背景3. github中pytorch源码关于这个问题的讨论 1. 内存泄漏定义 内存泄漏&#xff08;Memory Leak&#xff09;是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放&#xff0c;造成系统内存的浪费&#…

MIB 6.1810实验Xv6 and Unix utilities(3)pingpong

Mit6.S081-实验1-Xv6 and Unix utilities-pingpong问题_Isana_Yashiro的博客-CSDN博客 Write a user-level program that uses xv6 system calls to ping-pong a byte between two processes over a pair of pipes, one for each direction. The parent should send a byte to…

【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 4

1、下列哪个选项填到填到下图空缺处最合适 A、 B、 C、 D、 答案&#xff1a;D 2、按照如下图的规律摆放正方形&#xff0c;第 5 堆正方形的个数是 A、13 B、14 C、15 D、16 答案&#xff1a;D 3、从右面观察下面的立体图形&#xff0c;看到的是 A、 B、 C、 D、 答…

hyperledger fabric2.4测试网络添加组织数量

!!!修改内容比较繁琐,预期未来提供模板修改 修改初始配置文件,初始添加3个组织 organizations文件夹 /cryptogen文件夹下创建文件crypto-config-org3.yaml,内容如下: PeerOrgs:# ---------------------------------------------------------------------------# Org3# ----…

STM32电源名词解析

先来简单了解一下各种电源端口的命名 VCC&#xff1a;Ccircuit 表示电路的意思, 即接入电路的电压 VDD&#xff1a;Ddevice 表示器件的意思, 即器件内部的工作电压。 VSS&#xff1a;Sseries 表示公共连接的意思&#xff0c;通常指电路公共接地端电压。 GND&#xff1a;在电…

SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍

微服务注册中心 注册中心可以说是微服务架构中的”通讯录“&#xff0c;它记录了服务和服务地址的映射关系。在分布式架构中&#xff0c;服务会注册到这里&#xff0c;当服务需要调用其它服务时&#xff0c;就这里找到服务的地址&#xff0c;进行调用。 微服务注册中心 服务注…

wpf devexpress自定义编辑器

打开前一个例子 步骤1-自定义FirstName和LastName编辑器字段 如果运行程序&#xff0c;会通知编辑器是空。对于例子&#xff0c;这两个未命名编辑器在第一个LayoutItem(Name)。和最终用户有一个访客左右编辑器查阅到First Name和Last Name字段&#xff0c;分别。如果你看到Go…

第20章 数据库编程

通过本章需要理解JDBC的核心设计思想以及4种数据库访问机制&#xff0c;理解数据库连接处理流程&#xff0c;并且可以使用JDBC进行Oracle数据库的连接&#xff0c;理解工厂设计模式在JDBC中的应用&#xff0c;清楚地理解DriverManager类的作用&#xff0c;掌握Connection、Prep…

【SpringBoot3+Vue3】四【实战篇】-前端(vue基础)

目录 一、项目前置知识 二、使用vscode创建 三、vue介绍 四、局部使用vue 1、快速入门 1.1 需求 1.2 准备工作 1.3 操作 1.3.1 创建html 1.3.2 创建初始html代码 1.3.3 参照官网import vue 1.3.4 创建vue应用实例 1.3.5 准备div 1.3.6 准备用户数据 1.3.7 通过…

【Linux网络】详解使用http和ftp搭建yum仓库,以及yum网络源优化

目录 一、回顾yum的原理 1.1yum简介 yum安装的底层原理&#xff1a; yum的好处&#xff1a; 二、学习yum的配置文件及命令 1、yum的配置文件 2、yum的相关命令详解 3、yum的命令相关案例 三、搭建yum仓库的方式 1、本地yum仓库建立 2、通过http搭建内网的yum仓库 3、…

RabbitMQ消息的可靠性

RabbitMQ消息的可靠性 一 生产者的可靠性 生产者重试 有时候由于网络问题&#xff0c;会出现连接MQ失败的情况&#xff0c;可以配置重连机制 注意&#xff1a;SpringAMQP的重试机制是阻塞式的&#xff0c;重试等待的时候&#xff0c;当前线程会等待。 spring:rabbitmq:conne…

Java读写Jar

Java提供了读写jar的类库Java.util.jar&#xff0c;Java获取解析jar包的工具类如下&#xff1a; import java.io.File; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import java.util.Enumeration; import java.util.HashMap; import …

你知道什么是SaaS吗?

你知道什么是SaaS吗&#xff1f; 云服务架构的三个概念 PaaS 英文就是 Platform-as-a-Service&#xff08;平台即服务&#xff09;PaaS&#xff0c;某些时候也叫做中间件。就是把客户采用提供的开发语言和工具&#xff08;例如Java&#xff0c;python, .Net等&#xff09;开…

我叫:选择排序【JAVA】

1.我是个啥子&#xff1f;&#xff1f; 选择式排序&#xff1a;属于内部排序法,从欲排序的数据中,按指定的规则选出某一元素&#xff0c;再依规定交换位置后达到排序的目的。 2.我的思想 基本思想:第一次从arr[0]~arr[n-1]中选取最小值&#xff0c;与arr[0]交换&#xff0c;第…

单张图像3D重建:原理与PyTorch实现

近年来&#xff0c;深度学习&#xff08;DL&#xff09;在解决图像分类、目标检测、语义分割等 2D 图像任务方面表现出了出色的能力。DL 也不例外&#xff0c;在将其应用于 3D 图形问题方面也取得了巨大进展。 在这篇文章中&#xff0c;我们将探讨最近将深度学习扩展到单图像 3…