洛谷 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。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N=3e6+10;
int n;
int a[N];
int ret[N];
void test()
{
    stack<int> st;
    for(int i=n;i>=1;i--)
    {
        while(st.size()&&a[st.top()]<=a[i])
        st.pop();
        if(st.size())
        ret[i]=st.top();
        st.push(i);
    }
    for(int i=1;i<=n;i++)
    {
        cout<<ret[i]<<" ";
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    test();
    return 0;
}
相关推荐
chao1898446 分钟前
基于改进二进制粒子群算法的含需求响应机组组合问题MATLAB实现
开发语言·算法·matlab
Imxyk13 分钟前
P9242 [蓝桥杯 2023 省 B] 接龙数列
c++·算法·图论
炽烈小老头17 分钟前
【每天学习一点算法 2026/04/10】Excel表列序号
学习·算法
郝学胜-神的一滴17 分钟前
二叉树后序遍历:从递归到非递归的优雅实现
数据结构·c++·程序人生·算法·
宝贝儿好20 分钟前
【LLM】第一章:分词算法BPE、WordPiece、Unigram、分词工具jieba
人工智能·python·深度学习·神经网络·算法·语言模型·自然语言处理
渡我白衣20 分钟前
运筹帷幄——在线学习与实时预测系统
人工智能·深度学习·神经网络·学习·算法·机器学习·caffe
colus_SEU22 分钟前
SVM 的终极视角:合页损失函数 (Hinge Loss) 与正则化
算法·机器学习·支持向量机
汀、人工智能23 分钟前
[特殊字符] 第71课:爬楼梯
数据结构·算法·数据库架构·图论·bfs·爬楼梯
MicroTech202524 分钟前
微算法科技(NASDAQ :MLGO)量子启发式算法与CNN、Transformer结合,实现端到端彩色图像分割
科技·算法·启发式算法
X journey25 分钟前
机器学习进阶(14):交叉验证
人工智能·算法·机器学习