news 2026/6/12 8:02:51

信奥赛C++提高组csp-s之单调栈(案例实践2)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
信奥赛C++提高组csp-s之单调栈(案例实践2)

信奥赛C++提高组csp-s之单调栈(案例实践2)

【模板】单调栈

题目描述

给出项数为n nn的整数数列a 1 … n a_{1 \dots n}a1n

定义函数f ( i ) f(i)f(i)代表数列中第i ii个元素之后第一个大于a i a_iai的元素的下标,即f ( i ) = min ⁡ i < j ≤ n , a j > a i { j } f(i)=\min_{i<j\leq 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\dots n)f(1n)

输入格式

第一行一个正整数n nn

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

输出格式

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

输入输出样例 1
输入 1
5 1 4 2 3 5
输出 1
2 5 4 5 0
说明/提示

【数据规模与约定】

对于30 % 30\%30%的数据,n ≤ 100 n\leq 100n100

对于60 % 60\%60%的数据,n ≤ 5 × 10 3 n\leq 5 \times 10^3n5×103

对于100 % 100\%100%的数据,1 ≤ n ≤ 3 × 10 6 1 \le n\leq 3\times 10^61n3×1061 ≤ a i ≤ 10 9 1\leq a_i\leq 10^91ai109

解题思路

  1. 维护单调递减栈(栈顶最小)
  2. 逆序遍历数组(从右向左)
  3. 如果当前元素 >= 栈顶元素时,持续弹出栈顶
  4. 记录第一个大于当前元素的栈顶元素
  5. 当前元素入栈

代码实现

#include<iostream>usingnamespacestd;constintMAXN=3e6+5;inta[MAXN],res[MAXN],stk[MAXN],top=0;intmain(){intn;cin>>n;for(inti=1;i<=n;++i)cin>>a[i];for(inti=n;i>=1;--i){while(top&&a[stk[top]]<=a[i])top--;// 弹出不符合条件的元素res[i]=top?stk[top]:0;// 记录结果stk[++top]=i;// 当前索引入栈}for(inti=1;i<=n;++i)cout<<res[i]<<" ";return0;}

执行过程图解(样例数据)

当前ia[i]栈状态(底→顶)操作res[i]
55入栈0
43[5]3<55
32[5,4]2<34
24[5,4,3]弹出3,4→4>25
11[5,2]1<42

更多系列知识,请查看专栏:《信奥赛C++提高组csp-s知识详解及案例实践》:
https://blog.csdn.net/weixin_66461496/category_13113932.html

配套视频课信奥赛C++提高组csp-s知识详解
https://edu.csdn.net/course/detail/41081


各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新)https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 7:57:25

身份重构:当AI成为营销搭档,OPC创始人的不可替代性在哪里?

从“超级员工”到“意义定义者”的身份跃迁当AI营销智能体包揽了从线索发现到用户运营80%的标准化执行时&#xff0c;OPC创始人面临的并非“失业危机”&#xff0c;而是一场深刻的“身份解放”。过去&#xff0c;我们常常浪漫化OPC创始人的“全能打杂”状态。但当执行被AI商品化…

作者头像 李华
网站建设 2026/6/12 7:57:09

如何开发AI智能体项目

开发一个AI智能体项目&#xff0c;已经从单纯的“让大模型聊天”演变为一套结构化的软件工程。一个完整的智能体项目从构思到落地&#xff0c;通常需要经历以下六个标准化核心步骤。一、 场景定义与边界梳理&#xff08;需求分析&#xff09;开发智能体切忌追求“全能”&#x…

作者头像 李华
网站建设 2026/6/12 7:57:09

别再只懂QPSK了!OQPSK和IJF_OQPSK在卫星通信里到底强在哪?

卫星通信中的调制技术革新&#xff1a;OQPSK与IJF_OQPSK如何突破QPSK的局限在卫星通信系统的设计中&#xff0c;工程师们常常面临一个关键挑战&#xff1a;如何在有限的频谱资源和严苛的功率效率要求下&#xff0c;实现可靠的高速数据传输。传统QPSK调制虽然广泛应用&#xff0…

作者头像 李华
网站建设 2026/6/12 7:55:25

【Springboot毕设全套源码+文档】springboot人脸识别系统研究及其在社区门禁系统中的应用(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/12 7:55:24

大数据平台项目投标技术方案参考文档(Word300页)

一、工作大纲、工作方案及服务承诺 项目整体理解 梳理项目目标、实施重点与难点&#xff0c;明确项目整体建设模式 技术应答书 基础数据平台 介绍 HDP 平台选型&#xff0c;说明节点支撑、高可用、运维监控、配套组件等核心能力 权限管理 基于 RangerKnox 架构&#xff0c;…

作者头像 李华