洛谷 P5788 【模板】单调栈

题目背景

模板题,无背景。

2019.12.12 更新数据,放宽时限,现在不再卡常了。

题目描述

给出项数为 n 的整数数列 a1…n​。

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

试求出 f(1…n)。

输入格式

第一行一个正整数 n。

第二行 n 个正整数 a1…n​。

输出格式

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

输入输出样例

输入 #1复制

5
1 4 2 3 5

输出 #1复制

2 5 4 5 0

说明/提示

【数据规模与约定】

对于 30% 的数据,n≤100;

对于 60% 的数据,n≤5×103 ;

对于 100% 的数据,1≤n≤3×106,1≤ai​≤109。

解题思路

这道题是单调栈的模板题,在这道题之后我也写过其他单调栈的题目,基本无差。

首先定义一个栈,将原数组逆序判断,因为我们要比较i位置后面的数据。

当栈不为空且栈最顶端数据小于数组当前的数据时,将此时栈的数据踢出。

如果栈是空的,那么直接按题目要求输入0,存入新数组中;如果不为空,那么就将此时栈中最顶端的下标存入所求新数组中。

每次循环都要将此次循环的下标存入栈中。

最后直接输出所求的数组即可,完整代码如下:

​
#include<bits/stdc++.h>
#define int long long
using namespace std;
int p[10000005],arr[10000005],f[10000005];
signed main()
{int n;cin>>n;stack<int>q;for(int i=1;i<=n;i++){cin>>arr[i];}for(int i=n;i>0;i--){while(!q.empty()&&arr[q.top()]<=arr[i]){q.pop();}if(q.empty()){f[i]=0;}else{f[i]=q.top();}q.push(i);}for(int i=1;i<=n;i++){cout<<f[i]<<" ";}return 0;
}​

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

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

相关文章

linux系统运行时_安全的_备份_还原_方法rsync

1.问题与需求 问题: 新部署的机器设备(主控RK3588), 没有经过烧录定制镜像, 研发部署, 直接组装发送到客户现场需要通过frpc远程部署: 安装ros2 python包 docker镜像 环境配置 自启动配置 SN设备信息写自动部署脚本, 实现一键部署升级无奈物联网卡做了白名单限制, apt 和…

18套精美族谱Excel模板,助力家族文化传承!

【资源分享】18套精美族谱Excel模板&#xff0c;助力家族文化传承&#xff01; &#x1f3af; 本文分享一套完整的家族谱系资源&#xff0c;包含18个精心设计的Excel模板&#xff0c;从基础模板到专业图表&#xff0c;满足各类家族的族谱制作需求。 一、为什么要制作族谱&…

MySQL Galera Cluster企业级部署

一、MySQL Galera Cluster简介 主要特点 同步复制&#xff1a; 所有的写操作&#xff08;包括插入、更新、删除&#xff09;在集群中的所有节点上都是同步的。这意味着每个节点上的数据是完全一致的。 多主节点&#xff1a; 集群中的每个节点都是主节点。所有节点都可以处理读…

HTTP 重定向

什么是 HTTP 重定向&#xff1f; HTTP 重定向&#xff08;HTTP Redirect&#xff09; 是服务器向客户端&#xff08;通常是浏览器&#xff09;发出的指令&#xff0c;告诉客户端某个请求的资源已被移到新的位置。重定向通常通过发送一个特殊的 HTTP 状态码&#xff08;例如 3x…

本地加载非在线jar包设置

项目中存在私有jar包&#xff0c;提示在线获取不到&#xff0c;需要先获取到完整的jar包在打进maven中再在项目中进行maven依赖引入 mvn install:install-file -DfileD:\tools\maven\apache-maven-3.5.2\local_repository2\org\ahjk\SixCloudCommon\1.0\SixCloudCommon-1.0-SN…

Codeforces Round 979 (Div. 2)

A c[1]-b[1]0&#xff0c;之后每个c[1]-b[1]最大都是maxa-mina&#xff0c;最大和最小放前两个 B ans2^(a1)-2^s-1&#xff0c;1一个最小 C 我们可以把式子化为(....)||(....)||(....)括号里没有||&#xff0c;如果括号全是1那么A赢&#xff0c;A尽量选择把1选在一起 D …

UI前端大数据处理性能瓶颈突破:分布式计算框架的应用

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言&#xff1a;前端大数据处理的性能困境与破局之路在数据爆炸增长的时代&#xff0c;UI…

病虫害数据集

数据是泰迪杯主办方提供的已经标记好的数据&#xff0c;4k画质的图片&#xff0c;总大小8个G 链接&#xff1a;https://pan.baidu.com/s/1fvmNHGrLvflEovjfCjDLOw?pwd6666 提取码&#xff1a;6666 虫害包括&#xff1a; 八点灰灯蛾 褐飞虱属 白背飞虱 二化螟 蟋蟀 黄足…

JAVA基础:关于JDK环境变量设置的若干相关细节及注意事项

一、JDK下载安装 网址&#xff1a;https://www.oracle.com/java/technologies/downloads/ 以 win11 为例&#xff0c;根据网址下载安装包后&#xff0c;点击安装&#xff0c;注意设置安装路径 二、基础常识 1.Java三大使用平台 Java SE(Java Standard Edition): 标准版&…

C++高频知识点(四)

文章目录 16. 虚基类要解决什么问题&#xff1f;17. C中如何进行类型转换操作&#xff1f;列举并解释四种类型转换方式。18. 什么是函数重载&#xff1f;如何进行函数重载&#xff1f;19. 解释C中的友元函数和友元类&#xff0c;并解释其使用场景。友元函数友元类 20. 请解释C中…

【Servlet资源转发介绍】

文章目录 前言一、Servlet 资源转发是什么&#xff1f;1. 为什么要资源转发&#xff1f; 二、资源转发 vs 重定向三、如何使用 RequestDispatcher 进行资源转发1. 引入依赖2. 获取 RequestDispatcher3. forward 示例4. include 示例JSP 中 include 指令或动作Servlet 中 includ…

牛客周赛 Round 99题解

Round 99 思路&#xff1a;我们之间去用字符串去统计即可&#xff0c;输入一个字符串&#xff0c;看相邻有没有99即可 #include<bits/stdc.h> using namespace std; #define int long long string s; signed main() {cin>>s;int ns.size();for(int i1;i<n;i){i…

AR 如何改变我们构建网站的方式

想坐在沙发上试鞋子&#xff1f;欢迎来到 Web AR 的世界。还记得你在网页上逛商城时&#xff0c;点击一副墨镜&#xff0c;然后镜头打开&#xff0c;它就自动出现在你脸上的那一瞬间吗&#xff1f;不需要下载 App&#xff0c;不需要跳转&#xff0c;只需一个浏览器。这不是科幻…

华为OD机试 2025B卷 - 货币单位转换(C++PythonJAVAJSC语言)

2025B卷目录点击查看: 华为OD机试2025B卷真题题库目录|机考题库 + 算法考点详解 2025B卷 100分题型 题目描述 记账本上记录了若干条多国货币金额,需要转换成人民币分(fen),汇总后输出。 每行记录一条金额,金额带有货币单位,格式为数字+单位,可能是单独元,或者单独分…

php协程

开发需求:在一套老项目中&#xff08;fastadmin&#xff09;实现一个定时任务&#xff0c;每分钟访问几十个接口&#xff0c;拿到数据。 使用的swoole&#xff0c;在thinkphp5中实现协程。启动命令php swoole.php <?php //chdir(__DIR__); define(APP_PATH, __DIR__ . /app…

【教程】强制关闭Windows防火墙的自启动

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 背景说明 字节云的Windows server真是有点问题&#xff0c;忽然就开始自动开启防火墙&#xff0c;手动关闭了过几个小时又重新开启了&#xff0c;导致…

【Qt】QSignalMapper

QSignalMapper 是 Qt 提供的一个用于信号映射的类&#xff0c;它允许将多个信号源&#xff08;例如按钮点击&#xff09;映射到一个单一的槽函数&#xff0c;并传递自定义参数。这在需要根据不同的触发对象执行相似逻辑时非常有用。 用法说明 创建 QSignalMapper 实例&#xf…

Android Binder与AIDL与Service使用案例及分析

水一篇以前写的文章🤣 Binder是Android内置的一种比较高效的跨进程机制,它很复杂,也很好用,可以让我们像调用普通方法那样完成跨进程式方法调用和数据传递。我们现在只需要知道它比较复杂以及怎么使用即可。 ALDL全名Android interface Definition Language, 是Android…

基于ConvLSTM的行人检测与跟踪预测算法研究

基于ConvLSTM的行人检测与跟踪预测算法研究 摘要 本文详细探讨了基于ConvLSTM(卷积长短期记忆网络)的行人检测与跟踪预测算法的设计与实现。该算法结合了卷积神经网络(CNN)的空间特征提取能力和长短期记忆网络(LSTM)的时间序列建模优势,能够有效处理视频序列中的行人检测与…

深度学习基础2

5.张量索引操作 &#xff08;1&#xff09;索引操作 行列索引列表索引 print(data[[0, 2], [1, 2]]) #返回(0, 1)&#xff0c;(2, 2)两个位置的元素print(data[[[0], [1]], [1, 2]]) # 返回0&#xff0c;1行的1&#xff0c;2列共4个元素范围索引 print(data[:3, :2]) # 前3行前…