第八章 动态规划 5 AcWing 1591. 快速排序

news2025/7/15 21:01:39

第八章 动态规划 5 AcWing 1591. 快速排序

原题链接

AcWing 1591. 快速排序

算法标签

DP

思路

在这里插入图片描述
直接枚举a[i]之前所有元素与a[i]之后所有元素 判断
时间复杂度
O ( N 2 ) = O ( 1 0 10 ) O(N^2)=O(10^{10}) O(N2)=O(1010) 超时

a[i]之前所有元素小于a[i] ,即小于a[i]之前所有元素最大值
a[i]之后所有元素大于a[i], 即大于a[i]之后所有元素最小值
对a[i]数组预处理,得到a[i]之前所有元素最大值与a[i]之后所有元素最小值

在这里插入图片描述
判断
在这里插入图片描述

存储答案 依题意输出

时间复杂度

O ( N ) = O ( 1 0 5 ) O(N)=O(10^{5}) O(N)=O(105)

代码

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define int long long
#define x first
#define y second
#define ump unordered_map
#define ums unordered_set
#define pq priority_queue
#define rep(i, a, b) for(int i=a;i<b;++i)
#define Rep(i, a, b) for(int i=a;i>=b;--i)
using namespace std;
typedef pair<int, int> PII;
const int N=100005, INF=0x3f3f3f3f3f3f3f3f, MOD=1e9+7;
const double Exp=1e-8;
//int t, n, m, cnt, ans; 
int n, l[N], r[N], a[N];
vector<int> res;
inline int rd(){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
   return s*w;
}
void put(int x) {
    if(x<0) putchar('-'),x=-x;
    if(x>=10) put(x/10);
    putchar(x%10^48);
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	n=rd();
	rep(i, 1, n+1){
	    a[i]=rd();
	}
	rep(i, 1, n+1){
	    l[i]=max(l[i-1], a[i]);
	}
	r[n+1]=INF;
	Rep(i, n, 0){
	    r[i]=min(r[i+1], a[i]);
	}
	rep(i, 1, n+1){
	    if(a[i]>l[i-1]&&a[i]<r[i+1]){
	        res.push_back(a[i]);
	    }
	}
	if(res.empty()){
		// 第一个\n 输出移至下一行
		// 第二个\n 在下一行输出一个空行
	    printf("0\n\n");
	}else{
	    printf("%lld\n", res.size());
	    printf("%lld", res[0]);
	    rep(i, 1, res.size()){
	        printf(" %lld", res[i]);
	    }
	}
	
	return 0;
}

参考文献

AcWing 1591. 快速排序(PAT甲级辅导课)y总视频讲解

原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLO算法(You Only Look Once)系列讲解与实现(待完善)

文章目录前言一、指标分析1.mAP (mean Average Precision)2.IOU二、YOLO1.YOLO-v1&#xff08;1&#xff09;步骤&#xff08;2&#xff09;网络结构&#xff08;3&#xff09;损失函数&#xff08;4&#xff09;存在问题2.YOLO-v2&#xff08;1&#xff09;新的尝试-Better&am…

Pod的生命周期

Pod的生命周期 与容器一样&#xff0c;Pod也有生命周期&#xff0c;Pod在整个生命周期中被定义为各种状态。了解这些状态对于后面我们学习Pod的调度是有帮助的。 Pending 挂起状态&#xff0c;Pod已经被K8s系统所认可&#xff0c;但是目前还有一个或多个容器镜像还没有被创建&…

Git错误:Incorrect username or password (access token)

目录 问题描述&#xff1a; 解决办法&#xff1a; 步骤一&#xff1a;进入电脑控制界面 步骤二&#xff1a;进入用户账户 步骤三&#xff1a;管理你的凭据 步骤四&#xff1a;选择Windows凭据 步骤五&#xff1a;找到gitee 步骤六&#xff1a;修改正确的用户名和密码 问…

【学习笔记23】JavaScript数组的遍历方法

笔记首发 1、forEach 语法: 数组.forEach(function(item, index, origin){})参数&#xff1a; item: 数组实际每一项的值index: 数组每一项对应的下标origin:原数组 作用: 遍历数组返回值: 返回值是undefined&#xff0c;哪怕你手写了return&#xff0c;也是undefined var arr…

springboot 使用shiro集成阿里云短信验证码

目录 1.阿里云短信验证码服务 2.发送短信验证码 3.多个realm配置 4.验证短信验证码 5.一些拓展思路 引言&#xff1a;短信验证码是通过发送验证码到手机的一种有效的验证码系统&#xff0c;主要用于验证用户手机的合法性及敏感操作的身份验证。在注册和修改密码时需要用到…

手摸手教会你在idea中配置Tomcat进行servlet/jsp开发(多图超详)

1. 下载安装idea&#xff0c;创建project&#xff0c;如果没有JDK可以通过idea指定文件夹并下载JDK。工程就是普通的Java工程&#xff0c;名字为webdemo 2.因为是Web项目&#xff0c;所以要对这个普通的项目进行WEB扶持^^&#xff0c;在项目名称webdemo上右键单间选择菜单项&qu…

Hive搭建

Hive系列第二章 第二章 Hive搭建 2.1 MySQL5.6安装 1、检查删除已有的 有就删除&#xff0c;没有就不用管。 rpm -qa | grep mysql rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodepsrpm -qa | grep mariadb rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_642、删除mysql分…

Windows下Labelimg标注自己的数据集使用(Ubuntu18.04)Jetson AGX Orin进行YOLO5训练测试完整版教程

一、环境配置介绍 整个实现过程所涉及的文件目录&#xff0c;其中&#xff0c;自备表示自己需要准备的&#xff0c;生成表示无需自己准备。 使用yolov5时出现“assertionerror:no labels found in */*/*/JPEGImages.cache can not train without labels”问题 很多朋友都会遇…

SpringBoot+Vue项目医疗管理系统

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

待办事项是什么意思,怎么用?

待办事项是什么意思&#xff0c;为什么要用&#xff1f;待办事项工具怎么设置&#xff1f;这里一文给你讲清&#xff01; 废话不多说&#xff0c;下面直接教你&#xff1a;梳理待办事项清单的方法&#xff0c;以及待办工具的操作实操步骤。想要快速提升工作效率的小伙伴&#…

第三十七篇 Vue中封装Swiper组件

在上一篇内容的结尾讲到了将swiper初始化从mounted生命周期转移到updated中来能够让swiper动起来&#xff0c;但同时是否会造其他的一个问题&#xff1f;什么问题呢&#xff1f;在每次data中的状态发什么改变&#xff0c;updated中的内容会又重新执行&#xff0c;这样会导致swi…

二维数组与二级指针是好朋友吗?

抛出问题 有一个二维数组&#xff0c;我想把它传给一个函数。于是我把函数接口定义出来了&#xff0c;如下&#xff1a; int array[2][3] {1,2,3,4,5,6}; void fun(int **array) {array[0][0] 5; } 当我试图直接把数组名传给函数时候&#xff0c;fun(array)编译会报错&…

C++ 中explicit的作用及用法

目录 Cexplicit&#xff08;官网的说法&#xff09; Cexplicit 清楚的说法&#xff08;建议英文不好的从这里开始食用哦&#xff09; Cexplicit使用的例子&#xff08;建议喜欢自己敲代码实验的从这里开始食用哦&#xff09; 总结 Cexplicit&#xff08;官网的说法&#xff…

神经网络和深度学习-梯度下降Gradient Descent(下)

梯度下降gradient descent 我们接着用数学公式来看一下梯度下降 首先是梯度 ∂cos⁡t∂ω\frac{\partial \cos t}{\partial \omega} ∂ω∂cost​ 然后我们对权重进行更新 ωω−α∂cos⁡t∂ω\omega\omega-\alpha \frac{\partial \cos t}{\partial \omega} ωω−α∂ω∂c…

python基础之容器类型公共方法

文章目录一、简介1.高级数据类型的公共方法&#xff1a;2.python的内置函数&#xff1a;3.python包含的内置函数&#xff1a;二、遍历字典的列表一、简介 1.高级数据类型的公共方法&#xff1a; 列表元组字典或者字符串都能够共同使用的方法&#xff1b; 2.python的内置函数…

【kafka】七、kafka数据可靠性保证

数据可靠性保证 为保证producer发送的数据&#xff0c;能可靠的发送到指定的topic&#xff0c;topic的每个partition收到producer发送的数据后&#xff0c;都需要向producer发送ack&#xff08;acknowledgement确认收到&#xff09;&#xff0c;如果producer收到ack&#xff0c…

基于AntBlazor的学生在线练习系统实现过程的简单总结

前言 疫情当前&#xff0c;作为一名教师&#xff0c;如何能让学生进行有效练习成了一个难题。如果使用 “问卷星”等线上调查问卷式的网站来做练习测试&#xff0c;是无法及时有效的进行&#xff0c;更谈不上对学生练习情况进行跟踪。鉴于以上现实情况和问题&#xff…

神经网络和深度学习-用pytorch实现线性回归

用pytorch实现线性回归 用pytorch的工具包来实现线性模型的训练过程 准备数据集 设计模型 构造损失函数和优化器&#xff08;使用pytorch API&#xff09; 训练过程&#xff1a;前馈、反馈、更新 准备数据 在PyTorch中&#xff0c;计算图是小批处理的&#xff0c;所以X和…

MATLAB | 世界杯来用MATLAB画个足球玩叭~

世界杯教你用MATLAB画个超逼真的足球&#xff0c; 需要准备Partial Differential Equation Toolbox工具箱&#xff0c;同时因为用到了polyshape类所以至少需要R2017b版本。 绘制讲解 数据来源及说明 我是真的不想写注释了太麻烦了&#xff0c;给大家讲一下我的思路希望能够看…

判断一个时间段是否经过了另一个时间段

场景&#xff1a; IOT设备存在离线与恢复时间记录&#xff0c;每一次离线和恢复记为一个周期即一条数据, 现在需要统计出在某个时段存在离线记录的数据,如果目前未恢复,没有恢复时间&#xff0c;恢复时间置为9999-01-01 00:00:00 原始数据如下(t_offline_record)&#xff1a;…