【算法】怪盗基德的滑翔翼(最大上升子序列)

题目

怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。

而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。

有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了。

不得已,怪盗基德只能操作受损的滑翔翼逃脱。

假设城市中一共有N幢建筑排成一条线,每幢建筑的高度各不相同。

初始时,怪盗基德可以在任何一幢建筑的顶端。

他可以选择一个方向逃跑,但是不能中途改变方向(因为中森警部会在后面追击)。

因为滑翔翼动力装置受损,他只能往下滑行(即:只能从较高的建筑滑翔到较低的建筑)。

他希望尽可能多地经过不同建筑的顶部,这样可以减缓下降时的冲击力,减少受伤的可能性。

请问,他最多可以经过多少幢不同建筑的顶部(包含初始时的建筑)?

输入格式

输入数据第一行是一个整数K,代表有K组测试数据。

每组测试数据包含两行:第一行是一个整数N,代表有N幢建筑。第二行包含N个不同的整数,每一个对应一幢建筑的高度h,按照建筑的排列顺序给出。

输出格式

对于每一组测试数据,输出一行,包含一个整数,代表怪盗基德最多可以经过的建筑数量。

数据范围

1≤K≤100
1≤N≤100
0<h<10000

输入样例:

3
8
300 207 155 299 298 170 158 65
8
65 158 170 298 299 155 207 300
10
2 1 3 4 5 6 7 8 9 10

输出样例:

6
6
9

思路

题目简化:

在数组中寻找最长上升子序列或最长下降子序列,输出最大长度。

两层循环,循环两次 

        寻找最长上升子序列时:从左到右依次遍历数组中每个值,遍历到第 i 个值的时候,寻找 i 值左边的所有值,如果第 j 个数的值小于h[ i ] 则 ans[ i ]保留(ans[i]与ans[j] + 1)中的最大值。

        寻找最长下降子序列时:从左到右依次遍历数组中每个值,遍历到第 i 个值的时候,寻找 i 值左边的所有值,如果第 j 个数的值大于h[ i ] 则 ans[ i ]保留(ans[i]与ans[j] + 1)中的最大值。

代码

v#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int n;
int h[N];
int ans[N];

void solve()
{
    cin >> n;
    for(int i = 1; i <= n; i ++) cin >> h[i];
    for(int i = 1; i <= n; i ++) ans[i] = 1;
    int res = 0;
    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j < i; j ++)
        {
            if(h[j] < h[i]) ans[i] = max(ans[i],ans[j] + 1);
        }
        res = max(res,ans[i]);
    }
    for(int i = 1; i <= n; i ++) ans[i] = 1;
    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j < i; j ++)
        {
            if(h[j] > h[i]) ans[i] = max(ans[i],ans[j] + 1);
        }
        res = max(res,ans[i]);
    }
    cout << res << endl;
}

int main()
{
    int t;
    cin >> t;
    while(t --) solve();
    return 0;
}
难度:简单
时/空限制:1s / 64MB
总通过数:20548
总尝试数:29169
来源:《信息学奥赛一本通》
算法标签

DP线性DP最长上升子序列

题目来自: 1017. 怪盗基德的滑翔翼 - AcWing题库

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一进一出模拟量信号隔离变送器

一进一出模拟量信号隔离变送器 捷晟达科技推出一进一出模拟量信号隔离变送器 深圳捷晟达科技推出一款具有隔离,放大,转换保护功能的一进一出的小型隔离变送器设备,该设备可以把模拟量(4-20mA/0-10V等)标准信号转换用户需要的信号,该产品具有抗EMC干扰,可以有效的保护后级设备安…

第一节课,用户管理--后端初始化,项目调通。二次翻工2

一、网址来源&#xff1a; 快速开始 | MyBatis-Plus (baomidou.com) 进程&#xff1a; ​ 二、[此处不看]添加测试类&#xff0c;看下效果 2.1 参考 一、第一节课&#xff0c;用户管理--后端初始化&#xff0c;项目调通-CSDN博客 ​ 2.2 新建 SampleTest ​ 2.3 复…

Android Studio 下载安装配置使用入门【2024年最新】

前言&#xff1a; Android Studio 是谷歌官方提供的主要集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为 Android 平台应用开发而设计。它基于 JetBrains 的 IntelliJ IDEA 软件&#xff0c;并在此基础上增加了大量针对 Android 开发的定制功能。Android Studio 通过…

【AI视野·今日Robot 机器人论文速览 第七十六期】Fri, 12 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Fri, 12 Jan 2024 Totally 12 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Topology-Driven Parallel Trajectory Optimization in Dynamic Environments Authors Oscar de Groot, Laura Ferranti, Dari…

Java 对部分接口返回数据进行加密,或其他处理

业务场景&#xff1a;后端项目中分为PC端和移动端接口&#xff0c;移动端为例如 mobile 开头的URl&#xff0c;需求为调用移动端接口时&#xff0c;对返回数据进行加密&#xff0c;PC端不加密 import cn.hutool.core.date.DatePattern; import cn.hutool.json.JSONConfig; impo…

【C/C++ 02】希尔排序

希尔排序虽然是直接插入排序的升级版本&#xff0c;和插入排序有着相同的特性&#xff0c;即原始数组有序度越高则算法的时间复杂度越低&#xff08;预排序机制&#xff09;&#xff0c;但是是不稳定排序算法。 为了降低算法的时间复杂度&#xff0c;所以我们需要在排序之前尽…

力扣hot100 子集 回溯 超简洁

Problem: 78. 子集 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 参考题解 复杂度 时间复杂度: 添加时间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) 空间复杂度: 添加空间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) Code class Solution {List<Li…

HCIA---OSPF实验

题目&#xff1a; 一:IP规划及配置 IP规划没有要求&#xff0c;所以我们可以去任意规划&#xff0c;只要每个网段不要重复就好 规划的IP 配置IP 先在每个ABR设备上配置环回和接口IP&#xff0c;然后每台设备上使用display ip interface brief都查看一下 R1&#xff1a; R3&…

《2023直播电商数字化引领者》&《2023最受欢迎直播电商消费品牌TOP100》榜单发布

“ 独行快&#xff0c;众行远” 文 | 云舒&凯丰 编辑 | 小白 出品&#xff5c;极新&#xff06;北京电子商务协会 2024年1月27日&#xff0c;由极新、北京电子商务协会主办的「2024未来直播电商科技峰会」在北京首钢园三高炉A馆报告厅盛大召开。本届峰会以“预见”为主…

方案:将vue项目放在SpringMVC中,并用tomcat访问

需要先将项目生成一次war包才能访问项目的webapp文件夹下的资源&#xff0c;否则tomcat的webapp文件夹下面不会生成对应资源文件夹就无法访问。 问题&#xff1a;目录如下&#xff1a; 今天我测试了一下将vue打包后&#xff0c;放入webapp下面访问&#xff0c;却发现vue项目无…

华为radius认证

组网需求 如图1所示&#xff0c;用户同处于huawei域&#xff0c;Router作为目的网络接入服务器。用户需要通过服务器的远端认证才能通过Router访问目的网络。在Router上的远端认证方式如下&#xff1a; Router对接入用户先用RADIUS服务器进行认证&#xff0c;如果认证没有响应…

系列五十、idea父子项目忽略部分文件

一、idea父子项目忽略部分文件 **/mvnw **/mvnw.cmd **/.mvn **/target/ .idea **/.gitignore

分类预测 | Matlab实现SCN-Adaboost随机配置网络模型SCN的Adaboost数据分类预测/故障识别

分类预测 | Matlab实现SCN-Adaboost随机配置网络模型SCN的Adaboost数据分类预测/故障识别 目录 分类预测 | Matlab实现SCN-Adaboost随机配置网络模型SCN的Adaboost数据分类预测/故障识别分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现SCN-Adaboost随机配置网…

VRRP协议原理

目录 VRRP的产生单网关的缺陷多网关存在的问题VRRP基本概述VRRP基本结构状态机 VRRP主备备份工作过程VRRP的工作过程如果Master发生故障&#xff0c;则主备切换的过程如果原Master故障恢复&#xff0c;则主备回切的过程 VRRP联动功能 VRRP负载分担工作过程 VRRP的产生 单网关的…

Jupyter notebook文件默认存储路径以及更改方法

目录 1、文件默认存储路径怎么查&#xff1f;2、文件默认存储路径怎么改&#xff1f; 转自&#xff1a;https://blog.csdn.net/fengyeer20120/article/details/109483362 初次使用Jupyter Notebook&#xff0c;确实好用啊&#xff01;但安装Anaconda后&#xff0c;打开Jupyter …

top命令

在linux运维中&#xff0c;经常用到 top 命令&#xff0c;详细介绍一下&#xff1a; 字段介绍 时间&#xff1a; 当前时间系统运行时间当前登录用户数系统负载&#xff0c;即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值 任务&#xff1a; 进程总…

自然语言nlp学习 三

4-8 Prompt-Learning--应用_哔哩哔哩_bilibili Prompt Learning&#xff08;提示学习&#xff09;是近年来在自然语言处理领域中&#xff0c;特别是在预训练-微调范式下的一个热门研究方向。它主要与大规模预训练模型如GPT系列、BERT等的应用密切相关。 在传统的微调过程中&a…

idea 创建 spring boot

1.创建步骤 2. 编码添加 2.1 这是自动生成的启动函数 package com.example.comxjctest4;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class Application {publi…

【网络协议分析】利用Wireshark分析IP分片

一、实验目的 利用Wireshark软件抓包分析IP分片&#xff0c;了解IP分片的工作原理。 二、实验过程 1、网络拓扑 设备 IP地址 设备接口 MTU AR1 172.30.132.164 Ethernet 0/0/0 700 AR2 172.30.132.165 Ethernet 0/0/0 1200 2、实验过程 &#xff08;1&#xf…

SQL Server ISO镜像文件安装

参考&#xff1a;Sql Server ISO镜像文件安装指南_sqlserveriso文件怎么安装-CSDN博客 参考文件中的步骤基本相同&#xff0c;注意两点 1、尽量安装在D盘&#xff0c;有些组件默认必须安装在C盘&#xff0c;有些会报没有目录的情况 需要在D盘创建目录。 2、我没有windows本地…