LIS(最长上升子序列, 合唱队形)

 最长上升子序列

直接使用动态规划:

 这个题目的关键就是在于我们选定一个数,然后利用这个数作为标准和这个数之前的所有数进行比较,如果比前面某一个数要大,那么就需要将这数自己本身的现存的最长长度与比较出来的数的最长加一(这里为什么要加一,因为需要加上前面的长度之外还需要将自己的长度也加上)进行比较,然后取最大。 最后我们还需要在全部所有的数进行一次比较找到最大值,这个最大值就是答案。

这个就是相当于模板 以供后面需要求最长上升子序列的时候使用

代码如下

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int dp[1000000];
int a[1000000];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<i;j++)//这里值得注意的是,这个是将这个和前面所有的数都进行了一次比较
		{
			if(a[i]>a[j])
			dp[i]=max(dp[i],dp[j]+1);
		}
	}
	int ans=-1;
	for(int i=1;i<=n;i++)
	{
		if(ans<dp[i])
		ans=dp[i];
	}
	cout<<ans<<endl;
	return 0;
}

灵感:对于动态规划来说每一个数组元素都有自己的含义,与上下都是存在关系的

 合唱队形

其实这一题也是一个有关最长上升子序列的问题,只不过是先是从1到n求一次上升子序列,然后再是从从n到1求一次上升子序列,然后再在这里面求最优解。

代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int dp[1000000];
int dp1[1000000];
int a[1000000];
int sum[100000];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<i;j++)//这里值得注意的是,这个是将这个和前面所有的数都进行了一次比较
		{
			if(a[i]>a[j])
			dp[i]=max(dp[i],dp[j]+1);
		}
	}
	for(int i=n;i>=1;i--)
	{
		for(int j=n+1;j>i;j--)//这里需要注意,初始化是从j=n+1开始的,如果不从n+1开始就会少加上自己
		{
			if(a[i]>a[j])
			dp1[i]=max(dp1[i],dp1[j]+1);
		}
	}
	
	int ans=-1;
	for(int i=1;i<=n;i++)
	{
		sum[i]=dp[i]+dp1[i]-1;
	}
	for(int i=1;i<=n;i++)
	{
		if(ans<sum[i])
		ans=sum[i];
	}
	cout<<n-ans<<endl;
	return 0;
}

 

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

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

相关文章

【iOS ARKit】RealityKit 同步机制

协作 Session 可以很方便地实现多用户之间的AR体验实时共享&#xff0c;但开发者需要自行负责并确保AR场景的完整性&#xff0c;自行负责虚拟物体的创建与销毁。为简化同步操作&#xff0c;RealityKit 内建了同步机制&#xff0c;RealityKit 同步机制基于 Multipeer Connectivi…

Java核心卷一 · 笔记04

C++ type_info 类的使用 在 C++ 中,type_info 类是一个标准库提供的用于运行时类型信息的类。它定义在 <typeinfo> 头文件中,并用于获取和比较类型信息。下面是一些使用 type_info 类的常见操作示例: 包含头文件:#include <typeinfo>使用 typeid 运算符获取类…

安全防御(第六次作业)

攻击可能只是一个点&#xff0c; 防御需要全方面进行 IAE引擎 DFI和DPI技术 --- 深度检测技术 DPI --- 深度包检测技术 --- 主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09; &#xff0c;之后对 数据包的内容进行识别。&#xff08;应用层&a…

18 SpringMVC实战

18 SpringMVC实战 1. 课程介绍2. Spring Task定时任务1. 课程介绍 2. Spring Task定时任务 package com.imooc.reader.task

LSS 论文及代码详解:Lift, Splat, Shoot:

文章目录 1. 相关概念1.1 什么叫做BEV自底向上方法1.2 BEV网格2. 自底向上方法框架-LSS2.1 视锥点云和Lift操作2.1.1 视锥点云的空间位置2.1.2 视锥点云的特征(Context)2.2 BEV Pillar和Splat操作2.3 Shoot: Motion Planning2.4 完整的pipeline2.5 cumsum_trick(): 池化累积求…

LINUX基础培训二十七之shell标准输入、输出、错误

一、Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入&#xff0c;默认情况下&#xff0c;这恰好是你的终端。同样&#xff0c;一个命令通常将其输出写入到标准输出&#xff…

数电学习笔记——逻辑代数的基本定理

目录 一、带入定理 二、反演定理 三、对偶定理 一、带入定理 在任何一个包含变量A的逻辑等式中&#xff0c;若以另外一个逻辑式代入式中所有A的位置&#xff0c;则等式仍然成立。 例1&#xff1a;&#xff08;AB&#xff09;AB 将&#xff08;BC&#xff09;带入等式中所…

Jlink Segger工具软件的应用(如何连接)

一、Jlink Commander的如何连接 1、点击打开“Jlink Commander” 2、输入“connect” 3、根据提示输入“&#xff1f;”。 此处是选择MCU 内核类型 4、此时jink commander 会提示选择对应的内核&#xff0c;如“图F5.1”。根据内核类型进行选择。 SWM1xx系列、SWM2xx系列…

做活动和会议直播,为什么要多个媒体平台同步直播?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 多个媒体平台同步直播活动和会议的原因主要有以下几点&#xff1a; 扩大观众覆盖面&#xff1a;不同的媒体平台拥有各自独特的用户群体&#xff0c;通过在多个媒体平台同步直播&#xff…

2024年3月阿里云服务器价格下调折扣表(附优惠价格表)

阿里云服务器ECS等核心产品价格全线下调&#xff0c;最高幅度达55%&#xff0c;2024年3月1日生效&#xff0c;针对ECS部分在售产品的官网折扣价、ECS计算型节省计划进行调整&#xff0c;生效后&#xff0c;基于官网折扣价的新购和续费&#xff0c;将按照新的价格进行计费。阿里…

IDEA-DeBug理论与实践

文章目录 01_Debug简介和意义02_IDEA中的Debug步骤03_跳转到当前代码执行的行04_步过调试的使用05_步入调试的使用06_强制步入调试的使用07_步出调试的使用08_回退断点调试的使用09_运行到光标处10_计算表达式11_条件断点12_多线程调试 在软件开发中&#xff0c;IDEA&#xff0…

物联网技术助力智慧城市安全建设:构建全方位、智能化的安全防护体系

一、引言 随着城市化进程的加速和信息技术的迅猛发展&#xff0c;智慧城市已成为现代城市发展的重要方向。在智慧城市建设中&#xff0c;安全是不可或缺的一环。物联网技术的快速发展为智慧城市安全建设提供了有力支持&#xff0c;通过构建全方位、智能化的安全防护体系&#…

SpringMVC01、回顾MVC

1、回顾MVC 1.1、什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写&#xff0c;是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式&#xff0c;MVC是一种架构模式。…

Qt槽函数不响应的原因总结

Qt专栏&#xff1a;http://t.csdnimg.cn/LE2Lx 目录 1.问题 2.原因 2.1.没有继承QObject&#xff0c;声明Q_OBJECT宏 2.2.信号槽参数不匹配 2.3.信号函数未声明为 signals 2.4.访问权限 2.5.注意connect的位置&#xff0c;信号在创建信号槽连接前使用&#xff0c;则无法…

前端 JS 经典:Content-type 详解

1. 什么是 Content-Type Content-Type 是 HTTP 协议中的一个请求头或响应头字段&#xff0c;用于指示发送或接收的实体的媒体类型&#xff0c;告诉服务器或客户端如何解析和处理请求或响应的主体部分。 2. Content-Type 的构成 Content-Type 由两部分组成&#xff1a;媒体类型…

(python)多线程

前言 Python 多线程的应用场景通常是在需要同时执行多个 I/O 密集型任务时&#xff0c;以提高程序的效率和性能。 多线程应用场景 网络爬虫&#xff1a;当需要从多个网站获取数据时&#xff0c;使用多线程可以同时发起多个 HTTP 请求&#xff0c;以加快数据获取速度。 数据库操…

新闻稿软文投放推广发布需要注意什么

在全球化的背景下&#xff0c;各国之间的联系与互动变得越来越频繁。无论是经济、文化还是科技领域&#xff0c;各国之间的交流和合作都在不断加深。而在这个信息爆炸的互联网时代&#xff0c;人们获取信息的主要途径也逐渐转向了网络。 在这种情况下&#xff0c;软文推广成为…

Python+neo4j构建豆瓣电影知识图谱

文章目录 数据来源数据整理导入节点和关系导入使用Subgraph批量导入节点和关系 多标签实体和实体去重 数据来源 http://www.openkg.cn/dataset/douban-movie-kg 该网址拥有丰富的中文知识图谱数据集&#xff0c;OpenKG(Open Knowledge Graph)&#xff0c;可供研究人员使用研究…

数据库-第二/三章 关系数据库和标准语言SQL【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下计数据库系统概论中的重点概念&#xff0c;以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 文章目录 前言第二、三章 关系数据库和标准语言SQL2.1 关系2…

如何使用Portainer创建Nginx容器并搭建web网站发布至公网可访问【内网穿透】

文章目录 前言1. 安装Portainer1.1 访问Portainer Web界面 2. 使用Portainer创建Nginx容器3. 将Web静态站点实现公网访问4. 配置Web站点公网访问地址4.1公网访问Web站点 5. 固定Web静态站点公网地址6. 固定公网地址访问Web静态站点 前言 Portainer是一个开源的Docker轻量级可视…