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

算法竞赛备考冲刺必刷题(C++) | 洛谷 P5788 单调栈

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:P5788 【模板】单调栈 - 洛谷

【题目描述】

给出项数为n nn的整数数列a 1... n a_{1...n}a1...n

定义函数f ( i ) f(i)f(i)代表数列中第i ii个元素之后第一个大于a i a_iai的元素的下标,即f ( i ) = m i n ⁡ i < j ≤ n , a j > a i { j } f(i)=min_{⁡i<j≤n,a_j>a_i}\{j\}f(i)=mini<jn,aj>ai{j}。若不存在,则f ( i ) = 0 f(i)=0f(i)=0

试求出f ( 1 … n ) f(1…n)f(1n)

【输入】

第一行一个正整数n nn

第二行 nn 个正整数a 1 … n a_{1…n}a1n

【输出】

一行n nn个整数表示f ( 1 ) , f ( 2 ) , … , f ( n ) f(1),f(2),…,f(n)f(1),f(2),,f(n)的值。

【输入样例】

5 1 4 2 3 5

【输出样例】

2 5 4 5 0

【算法标签】

《洛谷 P5788 单调栈》 #线性数据结构# #栈# #单调栈# #模板题#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=3000005;// 数组大小常量intn,a[N],ans[N],q[N];// a: 输入数组, ans: 结果数组, q: 单调栈intmain(){scanf("%d",&n);// 读入数组长度// 读入数组元素for(inti=1;i<=n;i++)scanf("%d",&a[i]);inttop=0;// 栈顶指针,栈空时top=0// 从前往后遍历数组for(inti=1;i<=n;i++){// 当栈非空且当前元素大于栈顶元素时while(top>0&&a[q[top]]<a[i]){ans[q[top]]=i;// 记录栈顶元素的答案:第一个比它大的元素位置top--;// 弹出栈顶}q[++top]=i;// 将当前位置入栈}// 输出结果for(inti=1;i<=n;i++)printf("%d ",ans[i]);return0;}
// 使用acwing模板二刷#include<bits/stdc++.h>usingnamespacestd;constintN=3000006;// 定义数组大小,略大于3×10^6intn,a[N],ans[N],stk[N],tt;// a: 输入数组, ans: 结果数组, stk: 单调栈, tt: 栈顶指针intmain(){cin>>n;// 读入数组长度// 读入数组元素for(inti=1;i<=n;i++)cin>>a[i];// 单调栈算法for(inti=1;i<=n;i++){// 当栈不为空且当前元素大于栈顶元素时while(tt&&a[stk[tt]]<a[i]){ans[stk[tt]]=i;// 记录栈顶元素的下一个更大元素位置tt--;// 弹出栈顶}stk[++tt]=i;// 将当前索引入栈}// 输出结果for(inti=1;i<=n;i++)cout<<ans[i]<<" ";cout<<endl;return0;}

【运行结果】

5 1 4 2 3 5 2 5 4 5 0
http://www.cnnetsun.cn/news/514472.html

相关文章:

  • VAP动画播放技术:破解特效动画性能瓶颈的终极方案
  • Scrcpy安卓投屏终极指南:免费高效的屏幕镜像解决方案
  • 精通3D点云标注:labelCloud高效标注全流程解析
  • Movecall-Moji-ESP32S3 AI交互开发板深度评测与技术解析
  • MONAI Label革命性智能医学图像标注技术深度解析
  • 医疗表单识别落地:隐私数据本地化处理方案
  • 终极快速PowerShell脚本转换EXE完整指南:Win-PS2EXE让打包变简单
  • PowerShell脚本转EXE实战指南:Win-PS2EXE工具深度解析
  • 多模态翻译:文本与CSANMT结合新思路
  • 小程序 Thinkphp的旅游记忆游迹共享系统
  • Visual Studio完整卸载教程:彻底清理残留文件的终极指南
  • 英语发音资源宝库:一键获取11万+单词MP3音频的终极方案
  • FreeRTOS OTA回滚机制深度解析:如何构建可靠的固件升级失败恢复系统
  • 智能翻译API调用优化:降低延迟的7种方法
  • CellProfiler革命性指南:生物图像分析从入门到精通的高效实战技巧
  • 终极批量网址管理神器:告别手动操作的高效浏览器扩展
  • CellProfiler完整攻略:从零掌握生物图像自动分析的高效方法
  • LibreCAD完全指南:5个步骤掌握免费CAD设计核心技能
  • 开源OCR解决方案:CRNN模型+图像增强算法实战解析
  • Akagi雀魂助手:智能化麻将辅助系统完整操作教程
  • Blender模型导入Unity的3步终极解决方案:告别坐标错乱的专业指南
  • PyMOL分子可视化系统:终极安装与配置完全指南
  • 百度网盘秒传工具完整教程:从零基础到高手速成指南
  • 周末项目:用Z-Image-Turbo搭建你的AI艺术画廊
  • 会展管理优化:参会证OCR快速登记入场系统
  • 元宇宙内容工厂:基于预置环境的大规模3D资产生成
  • 学术研究加速器:预配置Jupyter环境助力论文复现
  • 玩转AI艺术:用Z-Image-Turbo和云端GPU打造个人创作空间
  • 3DS无线文件管理革命:告别数据线的智能传输方案
  • AI一键生成专业问卷,让调研效率飙升!