当前位置: 首页 > news >正文

AcWing 134:双端队列

【题目来源】
https://www.acwing.com/problem/content/description/136/

【题目描述】
达达现在碰到了一个棘手的问题,有 N 个整数需要排序。
达达手头能用的工具就是若干个双端队列。
她从 1 到 N 需要依次处理这 N 个数,对于每个数,达达能做以下两件事:
1. 新建一个双端队列,并将当前数作为这个队列中的唯一的数;
2. 将当前数放入已有的队列的头之前或者尾之后。
对所有的数处理完成之后,达达将这些队列按一定的顺序连接起来后就可以得到一个非降的序列。
请你求出最少需要多少个双端序列。

【输入格式】
第一行输入整数 N,代表整数的个数。
接下来 N 行,每行包括一个整数 Di,代表所需处理的整数。

【输出格式】
输出一个整数,代表最少需要的双端队列数。

【数据范围】
1≤N≤200000

【输入样例】
6
3
6
0
9
6
3

【输出样例】
2

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int N=2e5+5;
typedef pair<int,int> PII;
PII a[N];
int n;int main() {cin>>n;for(int i=0; i<n; i++) {cin>>a[i].first;a[i].second=i;}sort(a,a+n);int i=0,last=n+1,ans=1;int dir=-1; //dir is used to record directionswhile(i<n) {int j=i+1;while(j<n && a[j].first==a[i].first) {j++;}int minx=a[i].second;int maxx=a[j-1].second;if(dir==-1) { //dir=-1 indicates declineif(last>maxx) last=minx;else {dir=1; //dir=1 indicates increaselast=maxx;}} else {if(last<minx) last=maxx;else {ans++;last=minx;dir=-1;}}i=j;}cout<<ans<<endl;return 0;
}/*
in:
6
3
6
0
9
6
3out:
2
*/





【参考文献】
https://www.cnblogs.com/Horb7/p/15603051.html
https://www.acwing.com/solution/acwing/content/7210/
https://www.acwing.com/solution/content/27971/












 

http://www.lryc.cn/news/217637.html

相关文章:

  • Spring Cloud Gateway 重写 URL
  • 【C语法学习】10 - scanf()函数
  • ffmpeg mp3截取命令,视频与mp3合成带音频视频命令
  • 文件夹还在,里面文件没了?问题这样解决
  • 使用 OpenCV 和 Tesseract OCR 进行车牌识别
  • What exactly are the practices involved in DevOps?
  • Spring底层原理(五)
  • 算法的基本概念(数据结构与算法)
  • 高阶数据结构学习——LRU Cache
  • 代码冲突解决
  • c/c++程序的内存开辟时 的内存情况
  • 【linux常用命令+vi编辑器_2023.11.3】
  • okhttp post请求 header post参数加密遇到的两个问题
  • 什么是Webpack的loader和plugin?它们的作用是什么?
  • ESXi for ARM 最新下载地址
  • 2. 网络之网络编程
  • 工作数字化的中国历程 | 从 OA 到 BPM 到数字流程自动化
  • 6-1 二叉排序树查找操作
  • 服务上千家企业,矩阵通2.0重磅上线,全链路管理新媒体矩阵
  • 【代码随想录】算法训练计划11
  • Jmeter之JSR223
  • c++23中的新功能之十八新增的属性
  • 动手学深度学习:1.线性回归从0开始实现
  • 【计算机网络】应用层
  • python 深度学习 解决遇到的报错问题9
  • 能源管理系统为什么选择零代码开发平台?
  • 【LeetCode】剑指 Offer Ⅱ 第8章:树(12道题) -- Java Version
  • 利用maven的dependency插件将项目依赖从maven仓库中拷贝到一个指定的位置
  • 在Flask中实现文件上传七牛云中并下载
  • 【Linux】centOS7安装配置及Linux的常用命令---超详细