news 2026/6/9 21:16:05

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法竞赛备考冲刺必刷题(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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 18:37:39

Visual Studio彻底卸载工具:告别残留文件的终极解决方案

Visual Studio彻底卸载工具&#xff1a;告别残留文件的终极解决方案 【免费下载链接】VisualStudioUninstaller Visual Studio Uninstallation sometimes can be unreliable and often leave out a lot of unwanted artifacts. Visual Studio Uninstaller is designed to thoro…

作者头像 李华
网站建设 2026/6/6 12:52:28

卷积神经网络参数量:影响OCR推理速度的关键因素

卷积神经网络参数量&#xff1a;影响OCR推理速度的关键因素 &#x1f4d6; OCR文字识别中的性能瓶颈解析 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;作为连接图像与文本信息的核心技术&#xff0c;已广泛应用于文档数字化、票据处理、车牌识别等…

作者头像 李华
网站建设 2026/6/6 16:53:40

边缘计算场景适配:轻量OCR镜像部署在树莓派上的可行性

边缘计算场景适配&#xff1a;轻量OCR镜像部署在树莓派上的可行性 &#x1f4d6; 技术背景与边缘OCR的兴起 随着物联网和智能终端设备的普及&#xff0c;边缘计算正逐步成为AI应用落地的关键路径。传统OCR&#xff08;光学字符识别&#xff09;服务多依赖云端推理&#xff0c;存…

作者头像 李华
网站建设 2026/6/6 17:32:43

复杂版式文档:CRNN的表格识别能力

复杂版式文档&#xff1a;CRNN的表格识别能力 &#x1f4d6; 项目简介 在现代信息处理系统中&#xff0c;光学字符识别&#xff08;OCR&#xff09;技术已成为连接物理世界与数字世界的桥梁。无论是扫描文档、发票识别&#xff0c;还是街景文字提取&#xff0c;OCR 都扮演着关…

作者头像 李华
网站建设 2026/6/9 18:42:42

CRNN OCR在物流追踪的应用:运单自动识别系统

CRNN OCR在物流追踪的应用&#xff1a;运单自动识别系统 &#x1f4d6; 技术背景与行业痛点 在现代物流体系中&#xff0c;运单信息的快速、准确录入是实现高效分拣、实时追踪和客户服务的关键环节。传统的人工录入方式不仅效率低下&#xff08;平均每单耗时30秒以上&#xff0…

作者头像 李华
网站建设 2026/6/9 17:44:33

教学实践:如何在计算机课堂中快速部署Z-Image-Turbo实验环境

教学实践&#xff1a;如何在计算机课堂中快速部署Z-Image-Turbo实验环境 作为一名高校教师&#xff0c;我最近在准备AI课程的图像生成实验环节时遇到了一个难题&#xff1a;实验室的电脑配置参差不齐&#xff0c;有的机器甚至没有独立显卡&#xff0c;如何让学生都能流畅体验最…

作者头像 李华